Насколько я понимаю, если Java-объект xx не равен NULL, для этого объекта должен быть соответствующий Class
объект, который может быть получен с использованием метода getClass()
, но иногда этот метод возвращает null
во время выполнения, что очень странно .
Пример:
Объект (oldFact) - это сериализуемый объект, на который ссылаются в классе ExternalFactUpdateDroolsEvent
как взорванный, этот вызов сериализуется и десерилизуется в процессе его выполнения, означает, что первые много объектов типа ExternalFactUpdateDroolsEvent
сериализуются, а последние перед выполнением десерилизуются. , в этом процессе некоторое время объект oldFact возвращает null
Class
объект, вызывающий проблему.
У меня вопрос, если объект не null
как getClass()
метод возвращает null
? Является ли это чем-то связанным с пустыризованным объектом, который при неправильной инициализации / создании экземпляра или чем-то еще, этот объект может сериализоваться из другой 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 не является нулевым, поскольку нет исключений nullPointer для oldFact.getClass (); вызов,
класс objecr factClass передается в другой метод, где утверждается значение null, это
где мы исключение бросает. Смотрите код и исключение, как показано ниже.
Я заранее ценю вашу помощь.