ClassCastException при попытке привести объект к EMF EObject?

Мне нужно преобразовать любой объект в связанный с ним EObject. Когда я пытаюсь это сделать, я получаю исключение ClassCastException. Мой вопрос: можно ли превратить объект в EObject, и если возможно, как я могу это сделать.

Спасибо


person Baptiste Gousset    schedule 15.03.2012    source источник
comment
stackoverflow.com/questions/2986951/   -  person    schedule 15.03.2012
comment
возможный дубликат Может ли кто-нибудь объяснить ClassCastException в Java? (все ClassCastExceptions от приведения по той же причине)   -  person    schedule 15.03.2012


Ответы (2)


EObjects — это интерфейсы, которые описывают соответствующие им объекты, но не относятся к ним того же типа. Вы не можете бросать их. И действительно, ты не хочешь. Поскольку EObjects и их потомки описывают модели, а не вашу реальную программу.

person Jochen    schedule 15.03.2012
comment
Они того же типа, что и их исполнители. Например, ArrayList является списком, а также коллекцией, и его можно полностью преобразовать как таковое. Это НЕ должно быть отмечено как правильный ответ. - person Robin; 16.03.2012
comment
@Robin, EObjects являются частью структуры EMF в Eclipse (download.eclipse.org/modeling/emf/emf/javadoc/2.4.3/org/eclipse/). Ваш пример не имеет к ним абсолютно никакого отношения и приводит к путанице там, где ее быть не должно. - person Jochen; 16.03.2012
comment
Я исправляюсь. Я не смотрел на EMF около 5 лет и никогда не думал об этой проблеме с этой точки зрения. На самом деле мы оба правы, но, в отличие от вас, я не обращался к путанице с ЭДС, которая была у ОП. Мои извинения за отрицательный голос. - person Robin; 19.03.2012

Если вы получаете это исключение, то рассматриваемый экземпляр не является EObject. Это означает, что вы пытаетесь сказать, что это EOjbect, хотя на самом деле это не так.

Вы же понимаете, что кастинг — это не процесс преобразования? Он не «делает» ваш объект EObject, он просто «раскрывает» его как один (если он один).

Ваше исключение на самом деле скажет вам, какой объект вы пытаетесь преобразовать в EObject (который вы должны были включить в свой вопрос, кстати).

person Robin    schedule 15.03.2012