は、私が使用しようとしているこのシングルトンを持っているが、のgetInstanceは明らかにnullを返すことができます。Java Singleton.getInstance()はnullを返しますか?
class Singleton {
public static final String K_LEVEL = "level";
static Singleton instance = new Singleton();
private int level;
static Singleton getInstance() {
return instance;
}
int getLevel() {
return level;
}
void incrementLevel() {
System.out.println("LEVEL INCREASED TO " + ++level);
}
void addToLevel(int x) {
for(int i=0;i<x;i++)
incrementLevel();
}
}
class A {
public static void main(String[] args) {
Singleton s = Singleton.getInstance();
Integer i = Integer.getInteger(Singleton.K_LEVEL);
s.addToLevel(i);
}
}
は、私はJavaでシングルトンを実装聞いたが非常に困難となりやすい条件をレースすることです。私のシングルトンパターンは正しく実装されていますか?私は最近、このように見えるようにコードを変更しました。そして今、getInstanceはnullを返します。どうして?
$ java A -Dlevel=1
Exception in thread "main" java.lang.NullPointerException
at A.main(A.java:29)
's.addToLevel(i);' print'の直前にある 'System.out.println(i);'とは何ですか? – jlordo