2010-10-09 14 views
1

Je suis nouveau à Java et avez une question sur un avertissement:conversion non cochée si popping pile Java

Mon code général:

private Stack<ArrayList> stackFrame = new Stack<ArrayList>(); 
private ArrayList<Object> curBlocKList = new ArrayList<Object>(); 
... 
curBlockList = stackFrame.pop(); 

Je reçois:

Parser.java:78: warning: [unchecked] unchecked conversion 
found : java.util.ArrayList 
required: java.util.ArrayList<java.lang.Object> 
    curBlockList = stackFrame.pop(); 

Je ne sais pas comment faire ce travail syntaxiquement sans avertissement, car je travaille sur un devoir et les erreurs ne sont pas autorisés dans la compilation, et l'insertion

@SurpressWarning("unchecked")

n'est pas autorisé non plus.

Que dois-je faire pour me débarrasser de cet avertissement?

Je souhaite également que curBlocKList contienne une référence au sommet actuel de la pile. Est-ce que cela sera accompli par

curBlockList = stackFrame.pop(); 

ou est-ce qu'il y a autre chose que je dois faire?

Répondre

2

@SurpressWarning("unchecked") doit être mis avant que le prototype de méthode fonctionne.

Mais vous devriez essayer de changer

private Stack<ArrayList> stackFrame = new Stack<ArrayList>(); 

Dans

private Stack<ArrayList<Object>> stackFrame = new Stack<ArrayList<Object>>(); 
+0

Merci, cela a fonctionné parfaitement. – David

1

Vous devez paramétrer ArrayList au sein de votre paramétrisation de la pile. En outre, je recommande d'utiliser List au lieu de ArrayList; vous devriez program to the interface, not the implementation.

private Stack<List<?>> stackFrame = new Stack<List<?>>(); 
private List<?> curBlockList = new ArrayList<Object>();