Типизация универсальных объектов - PullRequest
1 голос
/ 02 марта 2012

У меня есть объект, я хочу преобразовать общий объект в объект класса.Я думал, что следующее должно работать.Но это не так:

Object o1=itr.next();
Class cls=o1.getClass();
Object obj=(cls) o1;

В чем может быть ошибка?Как я могу сделать это правильно?

Обновление: здесь у меня есть список объектов, принадлежащих к различным классам.Я буду использовать каждый класс в каждом цикле для преобразования в строку XML или JSON.для этого я хочу получить класс и объект, к которому он принадлежит.

Ответы [ 4 ]

6 голосов
/ 02 марта 2012

Вы должны вызвать метод приведения для объекта Class :

cls.cast(o1)
3 голосов
/ 02 марта 2012

Этот синтаксис:

Object obj=(cls) o1;

не допускается. Вы можете приводить только к типу , а cls - это объект типа Class, но не сам тип. Что вы пытаетесь сделать с этим? С таким же успехом можно написать:

Object obj = o1;

, поскольку любой ссылочный тип совместим с присваиванием с Object (и, кроме того, o1 уже имеет тип Object).

0 голосов
/ 02 марта 2012

Если ваш итератор возвращает объекты, которые на самом деле имеют тип Class, это может сработать:

Object o1=itr.next();
Class clazz = (Class)o1;

Если честно, ваш вопрос мне не совсем понятен.

0 голосов
/ 02 марта 2012
Object o1=itr.next();
Class cls=o1.getClass();
Object obj=(cls) o1; //whats does it make sense casting Object by object? o1 and obj both are object

и он может быть разыгран по типу T, а не по классу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...