brj*_*ngh 1 java reflection serialization
我的理解是,如果一个java对象xx不为null,那么Class
该对象必须有对应的对象可以使用getClass()
方法,但有时这个方法null
在运行时返回非常奇怪.
示例:
对象(oldFact)是可序列化的对象,在ExternalFactUpdateDroolsEvent
类中被引用为blew,此调用在其执行过程中被序列化和去除,意味着第一个类型为ExternalFactUpdateDroolsEvent
get serialized的对象,后者在执行之前被去除化,在此过程中,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();
........................
}
......................
}
Run Code Online (Sandbox Code Playgroud)
添加更多内容:
我确信oldFact不为null,因为oldFact.getClass()上没有nullPointer异常; 调用时,Class objecr factClass被传递给其他指向null的部分,这是我们异常抛出的地方.请参阅下面的代码和例外.我提前感谢您的帮助.
Sib*_*bbo 10
让我猜你在这一行中收到一个NullPointerException:
Class factClass = oldFact.getClass();
Run Code Online (Sandbox Code Playgroud)
由于事实,getClass()不能返回null(编辑:即使getClass()将返回null,这不会导致NullPointerException),oldFact必须是null.
归档时间: |
|
查看次数: |
7486 次 |
最近记录: |