我需要投從一種類型到另一個。 Google搜索但被困住了。說我要投initObject
到Casted
類。鑄造用NewInstance方法
Object objInstance = initObject.getClass().newInstance();
Casted str=(Casted)objInstance;
爲什麼它會使ClassCastException
?
我需要投從一種類型到另一個。 Google搜索但被困住了。說我要投initObject
到Casted
類。鑄造用NewInstance方法
Object objInstance = initObject.getClass().newInstance();
Casted str=(Casted)objInstance;
爲什麼它會使ClassCastException
?
鑄造要求Casted
類必須initObject
類的子類或子接口。例如:
List<String> list = new ArrayList<String>();
ArrayList<String> castedList = (ArrayList<String>) list; //works
Integer int = (Integer) list; // throws ClassCastException
替代鑄造可能是一個幫助器方法,它將轉換相關的對象。這樣的例子是Collections.toArray方法。
鑄造通常是不鼓勵的,因爲你基本上告訴編譯器,你知道什麼類型的鑄造對象是,當然你可能是錯的。
明白了,謝謝 – Mikhail
沒問題。如果您滿意,您也可以接受我的答案 – discipliuned
那麼,'initObject'的實際類是什麼,它擴展了'Casted'? – RealSkeptic
不,不。任務是從任何給定類型轉換爲另一種給定類型。也許我需要動態創建類來擴展我想要投射的對象類? – Mikhail
我不認爲你明白什麼是「投」指的時刻。另外,請注意,這不會嘗試轉換'initObject' - 它會創建一個initObject的值所引用的對象類型的新實例... –