我试图获取数组元素的类型。我有这样的事情:
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
谢谢!
答案 0 :(得分:1)
您的问题很不清楚,但在此代码中
new HashSet<Foo>();
您有没有机会通过反思获得Foo
部分。期。相关的搜索词是&#34;类型擦除&#34;。
答案 1 :(得分:0)
获得Foo的方法是:
ParameterizedType listType = (ParameterizedType) field.getGenericType();
Class<?> stringListClass = (Class<?>) listType.getActualTypeArguments()[0];
但是你必须确保field
是一个数组/集合/哈希集,否则,将是一个例外。