我正在尝试获取数组元素的类型。我得到了这样的东西:
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,否则将是一个例外。