采用以下方法,该方法仅按名称返回字段映射:
public static < T > HashMap< String, Field > getFields( Class< T > klass ) {
HashMap< String, Field > fields = new HashMap< String, Field >();
for ( Field f : klass.getFields() ) {
fields.put( f.getName(), f );
}
return fields;
}
如果删除方法签名中的泛型类型,则该方法的行为相同,只是您收到使用原始类型的警告。我遇到过其他类似的事情,尤其是反射,你不一定有输入类型。看起来反射只是自然会出现泛型问题,因为反射是为了让你在不知道(或关心)类型时使用对象。
除了在所有内容上粘贴“@SuppressWarning”之外,是否有人对更优雅的处理反射方式有任何好的想法,而不会被泛型一直骂?
答案 0 :(得分:5)
这个怎么样(你不需要模板参数T
,所以你可以跳过它):
public static HashMap< String, Field > getFields2( Class<?> klass ) {
HashMap< String, Field > fields = new HashMap< String, Field >();
for ( Field f : klass.getFields() ) {
fields.put( f.getName(), f );
}
return fields;
}
答案 1 :(得分:4)