我是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();
还是还有其他我需要做的事情?
答案 0 :(得分:2)
@SurpressWarning("unchecked")
应放在方法原型之前。
但你应该尝试改变
private Stack<ArrayList> stackFrame = new Stack<ArrayList>();
进入
private Stack<ArrayList<Object>> stackFrame = new Stack<ArrayList<Object>>();
答案 1 :(得分:1)
您需要在Stack的参数化中参数化ArrayList。另外,我建议使用List而不是ArrayList;你应该program to the interface, not the implementation。
private Stack<List<?>> stackFrame = new Stack<List<?>>();
private List<?> curBlockList = new ArrayList<Object>();