Apache Commons BeanUtils получить список свойств - PullRequest
1 голос
/ 10 апреля 2011

В 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

Спасибо.

1 Ответ

4 голосов
/ 10 апреля 2011

Я не знаю, возможно ли это с beanutils.Но вы можете сделать это с помощью отражения.

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

Возможно, вам понадобится несколько проверок выше (можете ли вы приводить, существуют ли фактические аргументы типа и т. Д.), Но вы поняли идею.

Информация о типе стирается во время выполнения, если она не является структурной - например, аргумент типа поля или класса.

...