java对象的getClass()方法返回null

brj*_*ngh 1 java reflection serialization

我的理解是,如果一个java对象xx不为null,那么Class该对象必须有对应的对象可以使用getClass()方法,但有时这个方法null在运行时返回非常奇怪.

示例:

对象(oldFact)是可序列化的对象,在ExternalFactUpdateDroolsEvent类中被引用为blew,此调用在其执行过程中被序列化和去除,意味着第一个类型为ExternalFactUpdateDroolsEventget 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.

  • 此外,即使*if**getClass()*返回*null*这也不会导致您提供的代码出现问题. (2认同)
  • 对不起,实际上指的是OP :) (2认同)