java - 数组列表中不安全或未经检查的表达式

标签 java arraylist binary-tree unsafe unchecked

我正在做一项作业,我必须创建一个可迭代集合来保存特定阈值之间二叉树的所有值。二叉树类有一个 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/

相关文章:

python - 调试Python : Binary Search Tree (Objects bug)

java - 无法从 True 获取根节点值。相反,给出最后一个节点的值

java - 使用 Maven 部署 Azure Web 应用程序

java - 如何在 Android 中写入和读取文本文件?

c# - 如何在C#中通过axWindowsMediaPlayer播放音频?

java - 如何创建 Set<String> 数组?

java - 二进制搜索树的深度,但有所不同

java - 具有两个参数的 Hibernate CriteriaBuilder

java - Java中如何获取for循环的最后一个值?

java - 在 Java 中收集符号出现的最快方法是什么