Непроверенная конвертация при выталкивании стека Java - PullRequest
1 голос
/ 10 октября 2010

Я новичок в Java и у меня есть вопрос о предупреждении:

Мой общий код:

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

Я получаю:

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

Я не знаю, как синтаксически выполнить эту работу без предупреждения, так как я работаю над домашним заданием, и ошибки не допускаются при компиляции и вставке

@SurpressWarning("unchecked")

также не допускается.

Что мне нужно сделать, чтобы избавиться от этого предупреждения?

Кроме того, я хочу, чтобы curBlocKList содержал ссылку на текущую вершину стека. Будет ли это достигнуто

curBlockList = stackFrame.pop();

или мне нужно еще что-нибудь сделать?

Ответы [ 2 ]

2 голосов
/ 10 октября 2010

@SurpressWarning("unchecked") следует поставить перед работой прототипа метода.

Но вы должны попытаться изменить

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

На

private Stack<ArrayList<Object>> stackFrame = new Stack<ArrayList<Object>>();
1 голос
/ 10 октября 2010

Вам необходимо параметризовать ArrayList в параметризации стека.Также я рекомендую использовать List вместо ArrayList;Вы должны программировать интерфейс, а не реализацию .

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