使用 NewInstance 进行投射

Casting with NewInstance

我需要从一种类型转换为另一种类型。谷歌但卡住了。假设我想将 initObject 转换为 Casted class.

Object objInstance = initObject.getClass().newInstance();
                    Casted str=(Casted)objInstance;

为什么会 ClassCastException

转换要求 Class Casted 必须是 Class initObject 的子类或子接口。例如:

List<String> list = new ArrayList<String>();
ArrayList<String> castedList = (ArrayList<String>) list; //works
Integer int = (Integer) list; // throws ClassCastException

转换的替代方法可能是转换相关对象的辅助方法。这样的例子就是 Collections.toArray 方法。

通常不鼓励强制转换,因为您基本上是在告诉编译器您知道被强制转换的对象是什么类型,当然您也可能错了。