我已经看到有两种方法可以在 Java 中转换对象:
List<Object> l = new ArrayList();
ArrayList<Object> first = (ArrayList<Object>) l;
ArrayList<Object> second = ArrayList.class.cast(l);
哪个更好?为什么?
更好的方法是最易读的。如果您已经知道要进行类型转换的类,请使用(ClassToUpcast) object
. 如果你不知道类但你有Class<ClassToUpcast> clazz
对象,那么使用clazz.cast(object)
.
ArrayList<Object> second = ArrayList.class.cast(l);
应该给你一个编译器警告,因为这个反射操作不能检查列表的类型参数。
ArrayList<Object> first = (ArrayList<Object>) l;
另一方面是非反射操作,编译器可以证明 List 和 ArrayList 的类型参数相同,因此这是一个安全的操作。
所以应该清楚哪个是首选。