3

我已经看到有两种方法可以在 Java 中转换对象:

List<Object> l = new ArrayList();
ArrayList<Object> first = (ArrayList<Object>) l;
ArrayList<Object> second = ArrayList.class.cast(l);

哪个更好?为什么?

4

2 回答 2

6

更好的方法是最易读的。如果您已经知道要进行类型转换的类,请使用(ClassToUpcast) object. 如果你不知道类你有Class<ClassToUpcast> clazz对象,那么使用clazz.cast(object).

于 2013-08-23T16:51:45.500 回答
0

ArrayList<Object> second = ArrayList.class.cast(l);应该给你一个编译器警告,因为这个反射操作不能检查列表的类型参数。

ArrayList<Object> first = (ArrayList<Object>) l;另一方面是非反射操作,编译器可以证明 List 和 ArrayList 的类型参数相同,因此这是一个安全的操作。

所以应该清楚哪个是首选。

于 2013-08-23T18:47:04.237 回答