国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java反射之getDeclaredField和getField的區別

2019-11-06 06:16:15
字體:
來源:轉載
供稿:網友

getDeclaredField是可以獲取一個類本身的所有字段. 

getField只能獲取類及其父類的public 字段. 

public Field getDeclaredField(String name)         throws NoSuchFieldException, SecurityException {         checkMemberaccess(Member.DECLARED, ClassLoader.getCallerClassLoader());         Field field = searchFields(PRivateGetDeclaredFields(false), name);         if (field == null) {             throw new NoSuchFieldException(name);         }         return field;     }      rivate Field getField0(String name) throws NoSuchFieldException {         Field res = null;         // Search declared public fields         if ((res = searchFields(privateGetDeclaredFields(true), name)) != null) {             return res;         }  ......  getField其實調用的是getField0. 他們最后都調用了searchFields. 不過getDeclaredField傳入的是privateGetDeclaredFields(false), getField傳入的是privateGetDeclaredFields(true), private Field[] privateGetDeclaredFields(boolean publicOnly) {         checkInitted();         Field[] res = null;         if (useCaches) {             clearCachesOnClassRedefinition();             if (publicOnly) {                 if (declaredPublicFields != null) {                     res = (Field[]) declaredPublicFields.get();                 }             } else {                 if (declaredFields != null) {                     res = (Field[]) declaredFields.get();                 }             }  可以看到傳入條件為true的時候使用的是declaredPublicFields,意思是public字段 為false的時候使用的是declaredFields. 當然declaredFields和declaredPublicFields最終的來源是 private native Field[]       getDeclaredFields0(boolean publicOnly);  可惜這是個native方法.感覺java就是很無奈,發現都是native方法檔在路上. 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 繁峙县| 越西县| 菏泽市| 喀喇沁旗| 高尔夫| 怀化市| 哈密市| 龙陵县| 宜兰县| 辰溪县| 西林县| 无为县| 阳西县| 大名县| 都江堰市| 凯里市| 锦屏县| 麻江县| 玉溪市| 阳江市| 天津市| 平凉市| 洛隆县| 浑源县| 青铜峡市| 靖江市| 桓台县| 丁青县| 连云港市| 祁阳县| 仁布县| 高阳县| 斗六市| 黄平县| 开封市| 溧水县| 永年县| 周口市| 宁夏| 峨山| 浮梁县|