通用对象类型转换

时间:2012-03-02 06:32:53

标签: java casting

我有一个对象,想将通用对象转换为类对象。我认为以下应该有效。但事实并非如此:

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

错误是什么?我怎么能正确地做到这一点?

更新:这里我有属于不同类的对象列表。我将使用每个循环中的每个类来转换为XML或JSON字符串。为此我想得到它所属的类和对象。

4 个答案:

答案 0 :(得分:6)

您必须致电cast method对象上的Class

cls.cast(o1)

答案 1 :(得分:3)

此语法:

Object obj=(cls) o1;

是不允许的。您只能转换为类型,而cls是类型为Class对象,而不是类型本身。你想用这个来完成什么?你也可以写:

Object obj = o1;

因为任何引用类型都与Object分配兼容(此外,o1已经是Object类型。)

答案 2 :(得分:0)

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转换,而不是类

答案 3 :(得分:0)

如果你的迭代器返回的实际属于Class类型的对象可能有效:

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

老实说,你的问题对我来说并不是很清楚。