我已经看到有两种方法可以在Java中强制转换对象:
List<Object> l = new ArrayList();
ArrayList<Object> first = (ArrayList<Object>) l;
ArrayList<Object> second = ArrayList.class.cast(l);
哪个更好,为什么?
答案 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的类型参数是相同的,因此这是一个安全的操作。
所以应该清楚哪一个更喜欢。