2009-08-13 6 views
1

J'ai eu cette idée à partir de cette question précédente.Pourquoi @SuppressWarnings casse mon code?

How to create a generic array in Java?

Quoi qu'il en soit, mon code est comme ceci:

public class Slice<E> 
{ 
    private E[] data; 
    public Slice(Class<E> elementType, int size) 
    { 
     //@SuppresWarnings({"unchecked"}) 
     data = (E[])Array.newInstance(elementType, size); 
    } 

} 

J'ai supprimé les choses inutiles. Cela compile bien lorsque la directive suppress est mise en commentaire. Quand je le décommente, je reçois

Error: <identifier> expected  
     data = (E[])Array.newInstance(elementType, size); 
      ^

Des idées? Pourquoi cela arriverait-il?

Répondre

6

Vous ne pouvez pas ajouter d'annotation. Il doit aller avant le mot-clé public. Vous avez également mal orthographié le nom de l'annotation: remplacez SuppresWarnings par SuppressWarnings.

EDIT: Si vous utilisiez un EDI comme Eclipse, vous utiliseriez généralement la fonction de correction automatique pour insérer l'annotation. Naturellement, il serait inséré au bon endroit et correctement orthographié.

+0

Je viens de voir ça dans mon commentaire juste après Je l'ai posté. Merci :) – Derrick

0

Longtemps pas de java pour moi, mais vous mettriez cela sur la méthode, pas seulement à l'intérieur, non?

+0

Dans l'autre thread, ils l'ont sur la méthode comme vous le suggérez. Je viens d'essayer ce moment, et a obtenu cette erreur: ne peut pas trouver symbole symbole: classe SuppresWarnings Lieu: classe Tranche \t @SuppresWarnings ({ « sans contrôle »}) ^ – Derrick

+0

Oui, vous aurez donc besoin de trouver le paquet dans lequel se trouve cette classe et l'importer. –

+0

@silky: non ... il va juste falloir épeler correctement le nom de la classe d'annotation :-) –

Questions connexes