我有一个对象,想将通用对象转换为类对象。我认为以下应该有效。但事实并非如此:
Object o1=itr.next();
Class cls=o1.getClass();
Object obj=(cls) o1;
错误是什么?我怎么能正确地做到这一点?
更新:这里我有属于不同类的对象列表。我将使用每个循环中的每个类来转换为XML或JSON字符串。为此我想得到它所属的类和对象。
答案 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;
老实说,你的问题对我来说并不是很清楚。