java反射异常之java.lang.NoSuchFieldException: school
2016-11-24 13:14
477 查看
今天调用下面的代码的时候
Field schoolField = studentClass.getField("school");
schoolField.setAccessible(true);
schoolField.set(null, "中南林科大");
System.out.print("school:" + student.getSchool());
爆出java.lang.NoSuchFieldException: school异常
2 、分析学生这个类里面的字段有没有搞错,我之复制的代码,怕有空格什么的,所以重新写这字段,然后还是报错。
3、看setAccessible 有没有写错,这个的确是访问私有权限的方法。
4、最后才发现是我的方法搞错了,不能用getField,需要用getDeclaredField
原来是方法写错了,权限不一样,希望下次不要再患这个错误
Field schoolField = studentClass.getField("school");
schoolField.setAccessible(true);
schoolField.set(null, "中南林科大");
System.out.print("school:" + student.getSchool());
爆出java.lang.NoSuchFieldException: school异常
分析思路:
1 、分析反射代码看字段有没有写错,分析了,的确没写错。2 、分析学生这个类里面的字段有没有搞错,我之复制的代码,怕有空格什么的,所以重新写这字段,然后还是报错。
3、看setAccessible 有没有写错,这个的确是访问私有权限的方法。
4、最后才发现是我的方法搞错了,不能用getField,需要用getDeclaredField
总结:
getField用于返回一个指定名称的属性,但是这个属性必须是公有的,这个属性可以在父类中定义。如果是私有属性或者是保护属性,那么都会抛出异常提示找不到这个属性
getDeclaredField获得在这个类型的声明中定义的指定名称的属性,这个属性必须是在这个类型的声明中定义,但可以使私有和保护的
原来是方法写错了,权限不一样,希望下次不要再患这个错误
相关文章推荐
- Java反射异常:java.lang.NoSuchFieldException
- Java反射异常:java.lang.NoSuchFieldException
- java.lang.NoSuchFieldException--java反射异常
- Java反射异常:java.lang.NoSuchFieldException
- JDBC中出现java.lang.NoSuchFieldException: bookName反射异常
- java.lang.NoSuchFieldException: resourceEntries 异常解决
- 解决ProGuard混淆代码时出现的java.lang.NoSuchFieldException: xxx…异常
- strtus2.3 java.lang.NoSuchFieldException: DEFAULT_PARAM>
- exception is java.lang.NoSuchFieldError: INSTANCE
- Java Exception: java.lang.NoSuchFieldError
- [struts2]2.3.14 json-plugin 存在bug<java.lang.NoSuchFieldException: DEFAULT_PARAM>
- java.lang.NoSuchFieldException: mThumbDrawable
- java.lang.NoSuchFieldError: deferredExpression异常
- Exception:java.lang.NoSuchFieldError: TRACE
- Exception in thread "main" java.lang.NoSuchFieldError: level
- Exception in thread "main" java.lang.RuntimeException: java.lang.NoSuchFieldException: versionID
- 异常:java.lang.NoSuchFieldError: deferredExpression解决
- ssh整合报错,nested exception is java.lang.NoSuchFieldError: TRACE
- elasticsearch 报出 Exception in thread "main" java.lang.NoSuchFieldError: LUCENE_3_6
- nested exception is java.lang.NoSuchFieldError: TRACE