Java演员:哪个更好 - 命令式还是程序化方式?

时间:2013-08-23 16:48:41

标签: java casting

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

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

哪个更好,为什么?

2 个答案:

答案 0 :(得分:6)

更好的方法是最具可读性的。如果您已经知道要进行类型转换的类,请使用(ClassToUpcast) object。如果您不知道课程,则您拥有Class<ClassToUpcast> clazz对象,请使用clazz.cast(object)

答案 1 :(得分:0)

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

另一方面,

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

所以应该清楚哪一个更喜欢。