[英]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 IDEA
和Eclipse
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.