国产探花免费观看_亚洲丰满少妇自慰呻吟_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方法檔在路上. 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 安多县| 黑山县| 宁安市| 泸定县| 镇沅| 台东县| 福海县| 剑阁县| 三台县| 丹阳市| 扎兰屯市| 威信县| 阿拉善右旗| 东台市| 克拉玛依市| 江油市| 洞口县| 永新县| 石城县| 灵宝市| 全椒县| 镇江市| 邻水| 基隆市| 深圳市| 桦川县| 红安县| 邢台市| 新余市| 永济市| 建阳市| 红桥区| 福安市| 祁东县| 五河县| 吉林省| 陇西县| 沂水县| 昌吉市| 兴山县| 贺兰县|