有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

强制转换Java cast:命令式还是编程式更好?

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

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

哪个更好,为什么


共 (2) 个答案

  1. # 1 楼答案

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

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

    因此,我们应该清楚选择哪一个

  2. # 2 楼答案

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