强制转换Java cast:命令式还是编程式更好?
我已经看到有两种方法可以在Java中强制转换对象:
List<Object> l = new ArrayList();
ArrayList<Object> first = (ArrayList<Object>) l;
ArrayList<Object> second = ArrayList.class.cast(l);
哪个更好,为什么
你可以在下面搜索框中键入要查询的问题!
我已经看到有两种方法可以在Java中强制转换对象:
List<Object> l = new ArrayList();
ArrayList<Object> first = (ArrayList<Object>) l;
ArrayList<Object> second = ArrayList.class.cast(l);
哪个更好,为什么
# 1 楼答案
ArrayList<Object> second = ArrayList.class.cast(l);
应该给您一个编译器警告,因为这个反射操作无法检查列表的类型参数另一方面
ArrayList<Object> first = (ArrayList<Object>) l;
是一种非反射操作,编译器可以证明List和ArrayList的类型参数是相同的,因此这是一种安全操作因此,我们应该清楚选择哪一个
# 2 楼答案
更好的方法是最具可读性的。如果您已经知道要执行类型转换的类,请使用
(ClassToUpcast) object
。如果你不知道类,但是你有Class<ClassToUpcast> clazz
对象,那么使用clazz.cast(object)