在eclipse中没有使用数组的未使用变量警告

时间:2013-12-17 11:14:04

标签: java arrays eclipse variables

我使用Eclipse Kepler并使用以下代码创建一个java文件:

String[] arr = new String[] {"abc", "def"};

Eclipse现在会显示警告:

  

未使用局部变量arr的值

如果我添加一行,则警告消失:

String[] arr = new String[] {"abc", "def"};
arr[0] = "ghi";

虽然没有读取数组的元素,但Eclipse并没有提醒我这一点。有这种行为的原因还是仅仅是一个Eclipse错误? (IntelliJ警告数组没有元素的读访问权。)

编辑: 我知道数组本身已被使用,但我希望我的IDE足够聪明,以检查数组中是否有任何元素被使用,因为数组实际上是其元素的容器。

4 个答案:

答案 0 :(得分:2)

这不是一个错误。对于编译器,当他看到arr[0]时,则使用该值。因为首先程序读取arr[0]的内容,然后创建"ghi"字符串,然后将其分配给arr[0]。在第一种情况下,编译器注意到该变量未被引用,因此它会向您发出警告。

答案 1 :(得分:2)

检测结构的使用,读取和写入之间存在差异。 Eclipse显然只有前者(大概是因为它稍微容易一些),而其他(如IntelliJ)更复杂,可以推断出更多的信息。

这不是一个错误;他们根本没有在Eclipse中高度重视静态分析。

答案 2 :(得分:1)

Eclipse基本上不够聪明,没有意识到你编写的代码行实际上对程序的行为没有任何影响(通常这对于计算机来说很难确定)。就其而言,如果局部变量在声明后未被引用,则它是未使用的。

答案 3 :(得分:0)

在这里

    String[] arr = new String[] {"abc", "def"};
    arr[0] = "ghi";  // you are writing to arr

但从未读过。现在两个条件都是正确的。 arr在代码中使用,从不阅读arr

然后IntelliJ IDEA会说你不会在这里阅读arr,而Ecplise从未显示过此前的警告。那不是错误。这两个是IntelliJ IDEAEclipse的功能。