我正在做一项作业,我必须创建一个可迭代集合来保存特定阈值之间二叉树的所有值。二叉树类有一个 root 变量,它是我编写的 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 中收到相同的消息,但这似乎意味着这并不重要。但是,我必须以某种方式解决这个问题。我尝试阅读不安全/未经检查的操作,但我不确定我是否真的理解这里的问题是什么。 有没有办法在不更改整个代码的情况下解决这个问题?
最佳答案
您正在使用 raw type :
public ArrayList<Integer> listing(
int low, int high, ArrayList list) {
// ^^^^^^^^^
这是不安全的,因为这可以让我传递任何类型的 ArrayList
:
root.listing(lo, hi, new ArrayList<String>(Arrays.asList("abc")));
使用ArrayList<Integer>
而不是ArrayList
.
关于java - 数组列表中不安全或未经检查的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30246197/