反射

獲取反射類的三種方法:

1.? Class.forName("類所在的包和類名");

Class class1 = Class.forName("com.qfedu.a_reflect.Person");

2:類名.class

Class class2 = Person.class;

3.:對象.getClass();

Class class3 = new Person(1,"jugg").getClass();

通過反射獲取構(gòu)造方法

1.獲取所有的public構(gòu)造方法

Constructor[] constructors = cls.getConstructors();

2.獲取包括私有化的所有構(gòu)造方法

Constructor[] allConstructors = cls.getDeclaredConstructors();

3.通過參數(shù),獲取指定的構(gòu)造方法

Constructor aConstructor = cls.getConstructor(int.class, String.class);

4.通過參數(shù)全释,獲取指定的構(gòu)造方法(包括私有的)

Constructor privateConstructor = cls.getDeclaredConstructor(null);

5.反射后厌杜,通過構(gòu)造方法昭娩,創(chuàng)建對象厚脉。如果是私有化構(gòu)造方法,要給予操作權(quán)限删铃。

privateConstructor.setAccessible(true);

Person p2 = (Person) privateConstructor.newInstance(null);

p2.setId(2);

p2.setName("劉德華");

System.out.println(p2);

通過反射概荷,獲取方法

Class cls = Class.forName("com.qfedu.a_reflect.Person");

Person p = (Person) cls.getConstructor(int.class, String.class).

newInstance(1, "狗蛋");

1.獲取所有非私有化的方法,包括從父類中繼承的

Method[] allPublicMethods = cls.getMethods();

2.獲取私有化在內(nèi)的所有方法搁宾,過濾掉繼承的方法

Method[] allMethods = cls.getDeclaredMethods();

3.獲取指定的方法(非私有化)

Method aPublicMethod = cls.getMethod("sleep", int.class);

獲取后折汞,方法的使用:

aPublicMethod.invoke(p, 15);

4.獲取指定的方法(包括私有化,使用的時候要授權(quán))

Method aPrivateMethod = cls.getDeclaredMethod("testPrivate", null);

aPrivateMethod.setAccessible(true);

aPrivateMethod.invoke(p, null);

5.獲取一個靜態(tài)方法

Method aPublicStaticMethod = cls.getMethod("eat", null);

aPublicStaticMethod.invoke(null, null);

反射盖腿,獲取字段

//加載字節(jié)碼文件爽待,獲取Class類對象

Class cls = Class.forName("com.qfedu.a_reflect.Person");

1.獲取所有用public修飾的成員變量

Field[] allPublicFields = cls.getFields();

2.暴力反射,獲取私有化在內(nèi)的成員變量

Field[] allFields = cls.getDeclaredFields();

3.獲取指定的字段(非私有化)

Field aPublicField = cls.getField("test");

//通過set方法翩腐,對對象進行賦值

//set(Oject obj, Object value);

//第一個參數(shù): 要操作的是哪一個對象里面的成員變量

//第二個參數(shù): 需要設(shè)置的值

Person p = (Person) cls.getConstructor(int.class, String.class).

newInstance(1, "狗蛋");

aPublicField.set(p, 20);

System.out.println(p.test);

4.獲取靜態(tài)的字段

Field aStaticField = cls.getField("testStatic");

int num = aStaticField.getInt(cls);

System.out.println("獲取int的靜態(tài)字段值鸟款,轉(zhuǎn)化為int的令一個原始類型的值" + num);

System.out.println(aStaticField);

aStaticField.set(null, 20);

System.out.println(Person.testStatic);

5.獲取私有化的指定字段,使用時要授權(quán)

Field aPrivateField = cls.getDeclaredField("id");

System.out.println(aPrivateField);

aPrivateField.setAccessible(true);

aPrivateField.set(p, 10);

System.out.println(p.getId());

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茂卦,一起剝皮案震驚了整個濱河市何什,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌等龙,老刑警劉巖处渣,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異蛛砰,居然都是意外死亡罐栈,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門泥畅,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荠诬,“玉大人,你說我怎么就攤上這事∏匙保” “怎么了望迎?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長凌外。 經(jīng)常有香客問我辩尊,道長,這世上最難降的妖魔是什么康辑? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任摄欲,我火速辦了婚禮,結(jié)果婚禮上疮薇,老公的妹妹穿的比我還像新娘胸墙。我一直安慰自己,他們只是感情好按咒,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布迟隅。 她就那樣靜靜地躺著,像睡著了一般励七。 火紅的嫁衣襯著肌膚如雪智袭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天掠抬,我揣著相機與錄音吼野,去河邊找鬼。 笑死两波,一個胖子當(dāng)著我的面吹牛瞳步,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腰奋,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼单起,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了氛堕?” 一聲冷哼從身側(cè)響起馏臭,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讼稚,沒想到半個月后括儒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡锐想,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年帮寻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赠摇。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡固逗,死狀恐怖浅蚪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情烫罩,我是刑警寧澤惜傲,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站贝攒,受9級特大地震影響盗誊,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜隘弊,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一哈踱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梨熙,春花似錦开镣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至肌割,卻和暖如春卧蜓,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背把敞。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留榨惠,地道東北人奋早。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像赠橙,于是被迫代替她去往敵國和親耽装。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 學(xué)習(xí)Android的同學(xué)注意了F诰尽5粞佟!學(xué)習(xí)過程中遇到什么問題或者想獲取學(xué)習(xí)資源的話凤薛,歡迎加入Android學(xué)習(xí)交流群...
    kingZXY2009閱讀 331評論 0 0
  • Java Reflect 反射機制 類字節(jié)碼文件是在硬盤上存儲的姓建,是一個個的.class文件。我們在new一個對象...
    灰氣球閱讀 1,180評論 0 0
  • java中反射是通過一定的條件得到類對象然后進行各種操作的過程缤苫; 反射有可以分為幾個層次速兔; 1 得到類對象 2. ...
    知足_71be閱讀 250評論 0 0
  • 敗走麥城 梨花海 2008-3-30 敗走麥城 ---不靈的仙兒 我小心翼翼 屏住呼吸 我全心全意 控制情緒 我惶...
    椏緹閱讀 383評論 0 0
  • 一些詞,比如堅持活玲,比如努力涣狗,聽上去就很吃力谍婉,所以很厭煩。 真的發(fā)現(xiàn)镀钓,原來有些東西穗熬,不是我們所謂的不堅持就成功不了,...
    奉旨生活閱讀 626評論 0 1