这看似简单,但我找不到答案。我在类上使用getDeclaredFields(),对于某些字段,它返回Set而不是集合中的Class。
for(Field f: clazz.getDeclaredFields()) {
//f is Set<Object> but f.getType() returns java.util.Set, not Object, how do I access the //Object? }
答案 0 :(得分:3)
如果我理解正确,您需要该字段的泛型类型。
for(Field f: clazz.getDeclaredFields()) {
Type type = f.getGenericType();
ParameterizedType impl = (ParameterizedType) type;
Class genericArgument = (Class) impl.getActualTypeArguments()[0];
System.out.println(genericArgument);
}
打印
class java.lang.String