“Java 里 Field 报错”这个说法太笼统了,具体要看报的是什么错、在哪一行、怎么用的 Field。下面我按常见场景给你梳理一下,基本能覆盖 90% 的情况。
Field 是什么(先统一概念)在 Java 反射里:
java.lang.reflect.Field
用于表示类的成员变量。
常见用法:
Field field = clazz.getDeclaredField("name");
field.setAccessible(true);
Object value = field.get(obj);
NoSuchFieldException原因:
private 但用了 getField()(只能拿 public)getDeclaredField()✅ 正确写法:
// 本类字段(包括 private)
clazz.getDeclaredField("name");
// public 字段(包括继承的)
clazz.getField("name");
IllegalAccessException原因:
field.setAccessible(true); // 必须加
常见场景:
field.get(obj); // ❌ private 没开权限
NullPointerException原因:
clazz == nullobj == null 但字段不是 staticfield.get(null); // ❌ 非静态字段
IllegalArgumentException原因:
field.get(obj) 的 obj 类型不对field.set(obj, value) 的 value 类型不匹配field.set(obj, "abc"); // ❌ 实际是 int
例如:
@Data✅ 解决:
.class常见:
Could not set fieldNo such property原因:
final你可以对照看看:
getDeclaredFieldsetAccessible(true)如果你愿意,把下面任意一项发我:
我可以直接帮你定位到具体哪一行、为什么报错、怎么改。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。