좀 static final String
필드를하고 난 반사를 사용하여 값이 그래서 이런 방법을 만들어 싶어 : 값을 반환 할 때 난 항상 NPE를받을 이유가 단순히 이해하지반사를 사용하는이 방법이 왜 npe를 던집니까?
public String getLogoSrc(final String provider) {
if (provider.equals(StringUtils.EMPTY)) {
return StringUtils.EMPTY;
}
logger.info("---provider is: "+provider);
for (Field f : ConstantsBean.class.getDeclaredFields()) {
f.setAccessible(true);
if (f.getName().contains(provider.toUpperCase().replace(" ", "_"))) {
try {
return f.get(null) != null? f.get(null).toString() : "";
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return StringUtils.EMPTY;
}
을 :
return f.get(null) != null? f.get(null).toString() : "";
예외는 다음과 같습니다
java.lang.NullPointerException
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl
.java:36)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccess
orImpl.java:18)
at java.lang.reflect.Field.get(Field.java:358)
at com.gravitant.cloud.common.jsf.core.beans.ConstantsBean.getLogoSrc(Co
nstantsBean.java:195)
어떤 단서?
NPE 스택 트레이스를 표시 할 수 있습니까? –