如何通过反射获取HashSet的元素?

时间:2016-07-22 12:20:20

标签: java reflection hashset

我试图获取数组元素的类型。我有这样的事情:

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

我必须通过反思来了解Foo&#39;作为一个字符串。 我试过这样的事情:

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

Array.get()仅适用于ArrayList,并且没有HashSet.iterator()作为Util

谢谢!

2 个答案:

答案 0 :(得分:1)

您的问题很不清楚,在此代码中

new HashSet<Foo>();

您有没有机会通过反思获得Foo部分。期。相关的搜索词是&#34;类型擦除&#34;。

答案 1 :(得分:0)

获得Foo的方法是:

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

但是你必须确保field是一个数组/集合/哈希集,否则,将是一个例外。