According to the JavaDocs, the newInstance()
Method of java.lang.Class
is not intented to return null.
But my code seems to prove the opposite. Why?
public Assessment createAssessment() {
Class<? extends Assessment> assessmentClass = (Class<? extends Assessment>) assessmentClassDataTable.getRowData();
try {
System.out.println("ASSESSMENTCLASS " + assessmentClass);
// -> 'ASSESSMENTCLASS class my.model.ManualSelectAssessment'
Assessment a = assessmentClass.newInstance();
System.out.println("ASSESSMENT " + a);
// -> 'ASSESSMENT null'
return a;
} catch (Exception e) {
Application.handleError(e);
}
return null;
}
It returns null.
newInstance() never returns
null
. HowevernewInstance().toString()
can return"null"
Note: One gotcha with newInstance() is that it can throw a CheckedException !
Even though IOException is a check exception, the compiler has not idea the newInstance() will throw this checked exception. If you try to catch it the compiler will complain it cannot be thrown !!