2016-07-22 97 views
-1

我想要獲取數組元素的類型。我有這樣的事情:如何獲得HashSet的反射元素?

Set<Foo> mySet = new HashSet<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

什麼是'field'? – EJP

回答

0

獲得美孚的方法是:

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

但你必須確保field是一個Array /收藏/ HashSet的,否則,將是一個例外。

1

你的問題還不是很清楚,但這個代碼

new HashSet<Foo>(); 

你有沒有機會通過反射得到Foo部分。期。相關的搜索詞是「type erasure」。