如何获取带有反射的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

谢谢!

你的问题很不清楚,在这个代码中

new HashSet<Foo>();

您没有机会通过反射获得Foo部分。时期相关的搜索术语是"类型擦除"。

获取Foo的方法是:

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

但您必须确保field是一个Array/Collection/HashSet,否则将是一个例外。

相关内容

  • 没有找到相关文章

最新更新