2

我开始为 Android 开发(我开始思考,值得吗!)。Eclipse 也不断给我很多奇怪的警告和错误!这是过去两个小时让我在谷歌上没有运气而感到沮丧的一个:

private String alertTitle= null;

有一个 !在它旁边标记删除“alertTitle”,保留有副作用的作业。这是什么?!我正在完全按照 Java 状态定义一个变量。我稍后使用该变量:

public ASAlertDialog setTitle(String title) {
        this.alertTitle = title;
        return this;
    }

另一个有点相似的是定义枚举”

public enum MyStyles {
     aStyle;
}

public MyStyles myStyle = aStyle;

这让Eclipse很生气!

4

5 回答 5

3

您可能通过为其分配值来使用变量名称,但您没有使用存储在变量中的值。为此,您必须使用变量名称来检索存储的值,并在代码中的某处对检索到的值执行某些操作。

当从未检索到该值时,Eclipse 将变量标记为未使用(或者更一般地说,永远不可能检索它*)。这意味着您只是为它分配值,但永远不会在任何地方使用它们。这使变量成为不必要的内存占用,因此发出警告。

*publicprotected变量不会收到警告,因为它们可以在其他类中检索,即使它们没有在它们声明的类中检索到,即使它们当前从未在任何类中检索过(将来可能会发生)由于图书馆使用)。

对于enum,它应该是:

public MyStyles myStyle = MyStyles.aStyle;

这是因为 anenum类似于一个类,其常量的作用类似于类中的静态变量。(这只是一个类比,而不是精确的语言定义。)您可以像从定义为的外部类中检索变量一样检索枚举常量static

于 2013-08-02T10:47:55.363 回答
1

您的变量未使用,因此 eclipse 会通知您,因此您会收到消息Remove "alertTitle", keep assignments with side effects

于 2013-06-06T13:47:29.167 回答
1

对于枚举,您需要将其声明为

public enum MODE
{
   NO_ASYNC_TASK,
   NO_DOWNLOADED_DRAWABLE,
   CORRECT
};

查看我的这个答案以获取更多信息

alertTitle警告是因为您在声明变量后可能没有使用它。

于 2013-06-06T13:48:12.993 回答
1

对于你的第一个问题:

这只是意味着您的变量没有被使用,因此您可以安全地删除它。一旦您开始在代码中使用该变量,警告就会消失。这里解释了副作用:

http://www.cs.umd.edu/~clin/MoreJava/Intro/assign.html

检查“赋值是表达式吗?”

对于你的第二个问题:

没有';' 在定义枚举时。检查这个:

http://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

于 2013-06-06T13:55:13.847 回答
0

尝试

public enum MyStyles {
     aStyle;
}

public MyStyles myStyle = aStyle;

关于您的字符串,也许 Eclipse 会通知您从未使用过您的变量。

顺便一提,

private String alertTitle;

默认为null,为什么要设置“= null”?

于 2013-06-06T13:49:56.383 回答