3

Java でオブジェクトをキャストする方法は 2 つあります。

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 に答える