1

我是 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();

还是我需要做其他事情?

4

2 回答 2

2

@SurpressWarning("unchecked")应该放在方法原型之前工作。

但你应该尝试改变

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

进入

private Stack<ArrayList<Object>> stackFrame = new Stack<ArrayList<Object>>();
于 2010-10-09T22:45:43.587 回答
1

您需要在 Stack 的参数化中参数化 ArrayList。另外,我建议使用 List 而不是 ArrayList;您应该对接口进行编程,而不是对实现进行编程

private Stack<List<?>> stackFrame = new Stack<List<?>>();
private List<?> curBlockList = new ArrayList<Object>();
于 2010-10-09T22:49:56.510 回答