나는 특정 클래스 (HUserDao)지도 (HDaoFactory.creators) 클래스 (HUser.class) 우리에게 열쇠로 새로운 인스턴스를 얻으려면 DAO 개체 공장을 구현하려고합니다. NPE가 위임하는 동안 던졌습니다
는이 코드를 가지고 :package com.hxx.model.dao;
public interface DaoFactory {
GenericDao getDao(Class dtoClass);
}
package com.hxx.model.dao;
import java.util.Map;
public class HDaoFactory implements DaoFactory {
public static Map<Class, DaoCreator> creators;
public interface DaoCreator {
public GenericDao create();
}
@Override
public GenericDao getDao(Class dtoClass) {
DaoCreator creator = creators.get(dtoClass);
if (creator == null) {
}
return creator.create();
}
}
그리고 정적 초기화 블록 실행 중
:package com.hxx.model.core;
import com.hxx.model.dao.HDaoFactory;
import com.hxx.model.dao.HUserDao;
import java.util.logging.Level;
import java.util.logging.Logger;
public class HUser extends HObjectAbstract {
public HUser() {
}
static {
try {
HDaoFactory.creators.put(HUser.class, new HDaoFactory.DaoCreator() {
@Override
public GenericDao create() {
return new HUserDao();
}
});
} catch(Exception ex) {
Logger.getLogger(HUser.class.getName()).log(Level.SEVERE,
HUser.class.getName().concat(".<init>: creating of dao instance has failed."));
ex.printStackTrace(System.out);
}
}
슬로우하는 NPE :
SEVERE: com.hxx.model.core.HUser.<init>: creating of dao instance has failed.
INFO: java.lang.NullPointerException
at com.hxx.model.core.HUser.<clinit>(HUser.java:48)
at com.hxx.controller.UserBean.<init>(UserBean.java:43)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:357)
at java.lang.Class.newInstance(Class.java:310)
at com.sun.faces.mgbean.BeanBuilder.newBeanInstance(BeanBuilder.java:188)
at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:102)
at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409)
at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269)
은 내가 잘못 무엇인가?
가능한 [null 포인터 예외 란 무엇이며 어떻게 수정합니까?] (http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how -do-i-fix-it) –
'creators'를 초기화하는 걸 잊었습니다 – dacongy