这看起来很简单,但我很难找到答案。我在一个类上使用 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? }
这看起来很简单,但我很难找到答案。我在一个类上使用 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? }
如果我理解正确,您需要该字段的通用类型。
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