1

Apache Commons BeanUtilで、リスト内の型を取得する方法は?例えば

class Track {
   List<Actor> actorList = new ArrayList<Actor>();
}

System.err.println(PropertyUtils.getPropertyType(trackBean, "actorList"));
// it should give me Actor instead of java.util.List

ありがとう。

4

1 に答える 1

4

beanutils で可能かどうかはわかりません。しかし、あなたは反射でそれを行うことができます。

Field field = Track.class.getDeclaredField("actorList");
ParameterizedType pt = (ParameterizedType) field.getGenericType();
Class clazz = (Class) pt.getActualTypeArguments()[0];

上記のいくつかのチェック (キャストできるかどうか、実際の型引数が存在するかどうかなど) が必要になるかもしれませんが、アイデアは理解できます。

型情報は、構造的なものでない限り、実行時に消去されます。たとえば、フィールドやクラスの型引数などです。

于 2011-04-10T18:02:28.263 に答える