日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java field, property,variable及getField和getDeclaredField的区别

發(fā)布時(shí)間:2024/6/21 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java field, property,variable及getField和getDeclaredField的区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

java 里面的field ,property, attribute,variable的區(qū)別

field: 就是定義的用于保存數(shù)據(jù)的字段

property: property是用于描述類中的特征,所以property比field的含義要廣,因?yàn)樘卣靼姆矫娓訌V,一個(gè)數(shù)據(jù)可以代表某方面的特征,但是并不是所有的特征都是你要的數(shù)據(jù),它可能是類本身的某個(gè)特性的描述。

variable:變量,就是我們平時(shí)看到的變量。

?

綜上:如果你要想通過反射來獲取某個(gè)數(shù)據(jù)模型里面的字段的話跟Field相關(guān),跟其它的沒多大關(guān)系。

getField:獲取某個(gè)類的所有public字段(包含所繼承的類的所有字段)

需要注意的是getField這個(gè)方法有很多的條件限制:在api文檔里面提到了,如果某個(gè)類(這里取名類A),類A中如果不包含public關(guān)鍵字修飾的Field,或類A是一個(gè)數(shù)組類型,原子類型(byte,short,int,long,char,float,double,boolean),無返回值類型的時(shí)候,這個(gè)方法返回的數(shù)組是一個(gè)長度為0的數(shù)組。假如你通過這個(gè)方法得到了要返回的字段了,這些字段是所有它的繼承與實(shí)現(xiàn)的父類,接口,及自身的字段列表。注意public申明的是字段而不是說你的get,set 方法是用public關(guān)鍵字生命的,假如的定義的成員變量 a 這個(gè)字段沒有public申明那么通過這個(gè)方法是取不到的。這里面有一句話蠻難理解的是“類A是一個(gè)數(shù)組類型,原子類型(byte,short,int,long,char,float,double,boolean),無返回值類型的時(shí)候”,它的意思是這個(gè)類型是你對(duì)象申明的類型,數(shù)組類型是 int []這種,而不是說你的類繼承了Array這個(gè)類型。以下舉個(gè)例子就理解了。

private static String[] fieldNamesOfClass(Class aClass){
if(aClass == null){
return null;
}
Field fields[] = aClass.getFields();
int length = fields.length;
String fieldNames[] = new String[length];
for (int i=0; i<length; i++){
Field field = fields[i];
fieldNames[i] = field.getName();
}

System.out.printf(fieldNames.toString());

return fieldNames;
} int []xx = new int[3];
String[] xxfieldNames = fieldNamesOfClass(xx);
int yy = 3;
String[] yyfieldNames = fieldNamesOfClass(yy);

getDeclaredField:獲取當(dāng)前類的字段(包含public,protected,private修飾的所有字段,不包含其所繼承類的字段),所以如果你要對(duì)某個(gè)數(shù)據(jù)模型做反射的話要注意里面的字段的定義,不要冗余了

(當(dāng)然你的類或接口里面沒有過申明字段,那么你掉上面那兩個(gè)方法是沒有一點(diǎn)意義的。返回的都是長度為0的數(shù)組)

獲取反射字段的方法是用?getDeclaredField;

轉(zhuǎn)載于:https://www.cnblogs.com/codetime/p/5427288.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的java field, property,variable及getField和getDeclaredField的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。