Я установил объект private static properties для загрузки в некоторой конфигурации для моего заводского класса в конструкторе фабричного класса.Закрытая переменная статического свойства приводит к исключению нулевого указателя
public class BussinessServiceFactory {
private static final BussinessServiceFactory factory = new BussinessServiceFactory();
public static BussinessServiceFactory createBussinessServiceFactory(){
return factory;
}
private BussinessServiceFactory(){
InputStream in = BussinessServiceFactory.class.getClassLoader().getResourceAsStream("factory/bussinessservice.properties");
try {
bsConfig.load(in);
} catch (IOException exception) {
// TODO Auto-generated catch block
throw new RuntimeException(exception);
}
}
private static Properties bsConfig = new Properties();
public <T> T createBussinessService(Class<T> clazz){
try {
String clazzName = clazz.getSimpleName();
String name = bsConfig.getProperty(clazzName);
return (T) Class.forName(name).newInstance();
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException exception) {
throw new RuntimeException(exception);
}
}
}
Однако, когда я инициализировать класс, он бросает NullPointerException
.
java.lang.NullPointerException
at factory.BussinessServiceFactory.<init>(BussinessServiceFactory.java:15)
at factory.BussinessServiceFactory.<clinit>(BussinessServiceFactory.java:8)
... 24 more
Затем, если я изменяю объект свойств на нестатический объект, проблема решена. Но меня все еще смущает причина, почему это произойдет и как это можно решить таким образом.
Ну, исключение говорит, что проблема находится в * testFindOrder *, и вы показываете нам * testPageQuery *. Как нам помочь? – CKing