使用 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 方法。
通常不鼓励强制转换,因为您基本上是在告诉编译器您知道被强制转换的对象是什么类型,当然您也可能错了。
我需要从一种类型转换为另一种类型。谷歌但卡住了。假设我想将 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 方法。
通常不鼓励强制转换,因为您基本上是在告诉编译器您知道被强制转换的对象是什么类型,当然您也可能错了。