我的理解是,如果一個Java對象xx是不是必須有相應的可以開始使用getClass()
方法對象Class
對象爲空,但有些時候這種方法在運行時即返回null
很奇怪。Java對象的getClass()方法返回null
實施例:
對象(oldFact)是在ExternalFactUpdateDroolsEvent
類引用作爲吹serializble對象,則此呼叫得到串行化並deserilized在它的excution過程,意味着ExternalFactUpdateDroolsEvent
類型的第一多個對象獲取序列化和後者得到在執行之前已滅絕,在此過程中有一段時間oldFact對象返回null
Class
導致問題的對象。
我的問題是如果一個對象不是null
getClass()
方法如何返回null
?這是否與deserilized對象有關,因爲在沒有正確初始化/實例化或其他某些事情時,這些對象可能會從不同的JVM序列化,然後在一個JVM上執行。
public class ExternalFactUpdateDroolsEvent implements DroolsEvent {
private static final long serialVersionUID = -8225631607832350264L;
private Object oldFact;
public ExternalFactUpdateDroolsEvent(Object oldFact) {
this.oldFact = oldFact;
this.updatedFact = updatedFact;
}
public void executeAction(StatefulKnowledgeSession ksession) {
// some time getClass() returns null that is strange
Class factClass = oldFact.getClass();
........................
}
......................
}
添加更多內容:
我肯定oldFact不爲空,因爲在oldFact.getClass沒有空指針異常();調用, Class objecr factClass正在被傳遞給其中的null被聲明爲 ,我們拋出了異常。請參閱下面的代碼和例外。 我很感激你的幫助。
爲什麼你認爲它返回null? –
'.getClass()'不能返回'null'。 – Bozho
Box(cast)oldFact到ExternalFactUpdateDroolsEvent或它屬於的任何類 – emaillenin