在 Java 中,Field(字段) 通常指 java.lang.reflect.Field,用于描述类中的成员变量。判断 Field 的“类型”一般可以从以下几个维度来理解:
通过 Field.getType() 或 Field.getGenericType():
Field field = SomeClass.class.getDeclaredField("list");
Class<?> type = field.getType(); // 普通类型
Type genericType = field.getGenericType(); // 包含泛型信息
示例:
private List<String> list;
getType() → interface java.util.ListgetGenericType() → java.util.List<java.lang.String>field.getType().isPrimitive();
例如:int, long, boolean
field.getType() == String.class;
field.getType().isAssignableFrom(List.class);
field.getType().isArray();
Collection.class.isAssignableFrom(field.getType());
Map.class.isAssignableFrom(field.getType());
if (field.getGenericType() instanceof ParameterizedType pt) {
Type[] types = pt.getActualTypeArguments();
}
示例:
Map<String, Integer> map;
可获取:
StringIntegerint mod = field.getModifiers();
Modifier.isStatic(mod);
Modifier.isFinal(mod);
Modifier.isPrivate(mod);
field.isAnnotationPresent(Autowired.class);
if (field.getType() == String.class) {
// do something
}
if (field.getGenericType() instanceof ParameterizedType pt
&& pt.getRawType() == List.class) {
Type actual = pt.getActualTypeArguments()[0];
}
| 目的 | 方法 |
|---|---|
| 字段类型 | getType() |
| 泛型类型 | getGenericType() |
| 基本类型 | isPrimitive() |
| 数组 | isArray() |
| 集合/Map | isAssignableFrom() |
| 修饰符 | getModifiers() |
| 注解 | isAnnotationPresent() |
如果你有 具体场景(如反射赋值、序列化、Spring 注入、JSON 解析),可以告诉我,我可以给更针对性的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。