clazz.getDeclaredFields()返回Set而不是Set中的Class

时间:2013-10-21 21:08:53

标签: java

这看似简单,但我找不到答案。我在类上使用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? }

1 个答案:

答案 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