java反射异常之java.lang.NoSuchFieldException: school
生活随笔
收集整理的這篇文章主要介紹了
java反射异常之java.lang.NoSuchFieldException: school
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
今天調用下面的代碼的時候
?
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: school的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android插件化开发之用DexCla
- 下一篇: 字符串之将整数字符串转成整数值