我有一個對象,想將通用對象轉換爲類對象。我認爲以下應該工作。但它沒有:通用對象類型轉換
Object o1=itr.next();
Class cls=o1.getClass();
Object obj=(cls) o1;
錯誤是什麼?我怎樣才能正確地做到這一點?
更新:在這裏我有屬於不同類的對象的列表。我將使用每個循環中的每個類轉換爲XML或JSON字符串。爲此,我想獲得它所屬的類和對象。
我有一個對象,想將通用對象轉換爲類對象。我認爲以下應該工作。但它沒有:通用對象類型轉換
Object o1=itr.next();
Class cls=o1.getClass();
Object obj=(cls) o1;
錯誤是什麼?我怎樣才能正確地做到這一點?
更新:在這裏我有屬於不同類的對象的列表。我將使用每個循環中的每個類轉換爲XML或JSON字符串。爲此,我想獲得它所屬的類和對象。
這句法:
Object obj=(cls) o1;
是不允許的。您只能投射到類型和cls
是對象類型Class
,而不是類型本身。你想用這個完成什麼?你也可以同樣寫:
Object obj = o1;
因爲任何引用類型是賦值兼容Object
(和,除此之外,o1
已經Object
類型)。
所以無論如何到typecast ?? ..我不能直接指定類,因爲它可以是一組類... – thecodejack 2012-03-02 06:39:49
@CodeJack:請編輯你的問題,以解釋你是什麼試圖去做。 – Mat 2012-03-02 06:41:53
@CodeJack你正試圖將'o1'轉換爲它的實際類型?你不能這麼做,至少使用你給我們展示的代碼片段。通常,'itr'是一個泛型類(即它有某種類型的參數),而type參數定義它返回的特定類型的對象。 – 2012-03-02 06:42:57
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
,不類定投
確實如此,在Object類型的變量中引用Castted對象是沒有意義的。但它對於調用方法很有用(這可能是OP想要做的):'cls.cast(o1).clsHasAMagicMethod()'。 – Koraktor 2012-03-02 06:42:56
@Koraktor如果'cls'是一些已知的類,這將是有意義的,但OP的代碼會得到的唯一東西是另一個'Object',因爲'cls'沒有任何聲明的泛型類型參數。 – 2012-03-02 06:51:13
@Koraktor id我們知道'clsHasAMagicMethod()'的名字,那麼我們必須知道類,所以我們可以做更簡單的'((classname)o1).clsHasAMagicMethod()' – 2012-03-02 06:53:22
如果你的迭代器返回,實際上是對象type Class this might work:
Object o1=itr.next();
Class clazz = (Class)o1;
說實話,你的問題對我來說不是很清楚。
你打算怎麼處理這個 – Jayy 2012-03-02 06:39:01