我正在做一个分配,我必须创建一个可迭代的集合,该集合可保存特定阈值之间的二叉树的所有值。二进制树类具有一个根变量,它是我编写的TreeNode类的对象。节点仅存储整数值。这是我的方法:
public class Tree {
public Iterable<Integer> listing(int low, int high) {
ArrayList<Integer> list=new ArrayList<Integer>();
return root.listing(lo, hi, list);
}
}
public class TreeNode {
public ArrayList<Integer> listing(int low, int high, ArrayList list) {
if(this.left!=null) {
list=this.left.listing(low, high, list);
}
if(this.value>=low && this.value<=high) {
list.add(this.value);
}
if(this.right!=null) {
list=this.right.listing(low, high, list);
}
return list;
}
}
它在本地工作得很好,但是我必须将其上载到使用Java 6的平台上,但我收到一个错误,指出它使用了未经检查或不安全的操作。
我在IDE中也得到了相同的消息,但似乎暗示它不是很重要。但是,我必须以某种方式解决此问题。我尝试阅读不安全/未经检查的操作,但不确定我是否确实了解这里存在的问题。
有什么方法可以解决此问题而不更改整个代码?
最佳答案
这不是一个错误,而是一个警告,但是,正如您指出的那样,您可能应该修复它。
问题是您要传递一个未绑定的ArrayList
,从理论上讲,它可以容纳任何类型的元素,而您只处理Integer
。因此,您可以将参数声明为ArrayList
的Integer
:
public ArrayList<Integer> listing(int low, int high, ArrayList<Integer> list) {
编辑:
顺便说一句,方法的声明中不需要ArrayList。由于您唯一关心的是
List
接口,而不是其实现,因此可以稍微清除一下声明:public List<Integer> listing(int low, int high, List<Integer> list) {
关于java - 数组列表中不安全或未经检查的表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30246197/