我有一个类定义,如下所示。我希望它是一个单身人士。
public class MyClass {
public static MyClass sInstance;
public static final int STATUS_CONSTANT = 0;
public int myProperty = 0;
public static MyClass get() {
if (sInstance==null) {
sInstance= new MyClass();
}
return sInstance;
}
}
使用它时,JetBrains IdeaJ警告我,比较总是返回false ...
MyClass myClass = MyClass.get();
if (myClass.myProperty == MyClass.STATUS_CONSTANT) {
...
}
...然而,如果我这样做的话,它并没有说是anthing:
if (MyClass.get().myProperty == MyClass.STATUS_CONSTANT)
我不明白为什么它对第一种方法感到生气!?在任何一种方式中,它应该引用相同的静态字段(sInstance)。
答案 0 :(得分:1)
我无法看到您的情况有任何问题,所以我将您的代码复制到NetBeans项目中,我没有得到任何类似的提醒,所以我决定运行您的代码:
MyClass myClass = MyClass.get();
if (myClass.myProperty == MyClass.STATUS_CONSTANT) {
System.out.println("OK");
}
它打印" OK"所以有条件不是假的。
我可以看到在"总是错误的情况下有一些报道的错误" IntelliJ检查器: