Ich komme aus anderen Sprachen zu Java, also bitte vergib mir, wenn das offensichtlich ist, aber ich habe ein sehr seltsames Verhalten angetroffen.Java Singleton löst manchmal NullPointerException
Ich schreibe eine einfache Pig UDF. Ich gebe ein Tuple-Objekt zurück, das ich mit einem TupleFactory-Singleton erstellt habe. In den folgenden zwei Codebeispielen funktioniert das erste Beispiel, während das zweite eine NullPointerException auslöst, wenn das newTuple
erstellt;
public class MyUDF {
public Tuple func(Tuple input) {
return TupleFactory.getInstance().newTuple(Arrays.asList(o1, o2, o3));
}
}
public class MyUDF {
...
TupleFactory _factory;
public Tuple func(Tuple input) {
_factory.getInstance();
return _factory.newTuple(Arrays.asList(o1, o2, o3));
}
}
dass bcz, das Sie bearbeiten, _factory.getInstance() gibt eine neue Instanz zurück, die nicht an _factory instance zurückgegeben wird – mhasan