繁体   English   中英

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

[英]No unused variable warning using arrays in eclipse

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

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

Eclipse现在显示警告:

未使用局部变量arr的值

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

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

尽管没有读取数组的任何元素,但是Eclipse并没有警告我。 是否有这种现象的原因,或者仅仅是Eclipse错误? (IntelliJ警告有关无法读取其元素的数组。)

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

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

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

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

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

在这里

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

但是从来没有读过。 现在两个条件都正确。 在代码中使用arr ,从不读取arr

然后IntelliJ IDEA会说您在这里没有读到arr ,而Ecplise从不显示先前的警告。 那不是错误。 这两个是IntelliJ IDEAEclipse

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM