2016-07-22 5 views
-1

Я пытаюсь получить тип элементов массива. У меня есть что-то вроде этого:Как я могу получить элемент HashSet с отражением?

Set<Foo> mySet = new HashSet<Foo>(); 

Я должен принять через отражение «Foo» как строку. я пытался что-то вроде этого:

if (className.equals("java.util.HashSet")){ 
     Object arrayElement = Array.get(value, 0); 
     isComplex = isComplex(field, arrayElement); 
} 

Array.get() предназначен только для ArrayList и нет никакого HashSet.iterator(), как Util

Спасибо!

+0

Игнорировать строку 'isComplex = isComplex (field, arrayElement)' Это просто логическое значение. –

+0

Что такое 'поле'? – EJP

ответ

0

Метод получения Foo является:

ParameterizedType listType = (ParameterizedType) field.getGenericType(); 
Class<?> stringListClass = (Class<?>) listType.getActualTypeArguments()[0]; 

Но вы должны быть уверены, что field является массив/Коллекция/HashSet, иначе, будет исключением.

1

Ваш вопрос не совсем ясно, но в этом коде

new HashSet<Foo>(); 

у вас нет шанса получить Foo части с помощью отражения. Период. Соответствующий термин поиска - «стирание типа».