我正在做一个分配,我必须创建一个可迭代的集合,该集合可保存特定阈值之间的二叉树的所有值。二进制树类具有一个根变量,它是我编写的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。因此,您可以将参数声明为ArrayListInteger

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/

10-09 19:50