淺談Java反射一

轉(zhuǎn)載請注明出處:
http://egoistk21.xyz/2016/10/12/淺談Java反射一/

這學(xué)期剛開學(xué)的時候在睿思(我們學(xué)校的BBS)上看到了一個學(xué)長的求助六水,就收藏了盹靴,那時候自己還在搭建Hexo博客所计,沒時間研究京革,昨天就去翻看了一下,原題如下:

public class A {
    protected String getString() {
        return "A";
    }
}

public class B extends A {
    protected String getString() {
        return "B";
    }
}

public class C extends B {
}

要求在子類C的對象中訪問其父類的父類A中的getString方法偏瓤。


這題不能想當(dāng)然地在C類里面加一個A類的成員腿堤,要訪問一個編譯時根本無法預(yù)知類型的對象,那必須使用反射波势。那今天我們就來講一下用反射查看類的信息翎朱。

我們先來講一下Java中Class這個類,好比類是一批擁有共同特征的對象的抽象艰亮,Class是這些類的抽象闭翩,也就是說Class是所有類的類。Class 類的實(shí)例表示正在運(yùn)行的 Java 應(yīng)用程序中的類和接口迄埃。Class 沒有公共構(gòu)造方法。Class 對象是在加載類時由 Java 虛擬機(jī)以及通過調(diào)用類加載器中的 defineClass 方法自動構(gòu)造的兑障。例如car.getClass().getName(); 還可以使用一個類字面值來獲取指定類型(或 void)的 Class 對象侄非。例如蕉汪,Car.class.getName(); 有了獲取正在運(yùn)行的 Java 應(yīng)用程序中的類的方法,接下來就好辦了逞怨。

public class C extends B {
    public static void main (String args[]){
        Class a = C.class.getSuperclass().getSuperclass();
        try {
            Object o = a.newInstance();
            A c = (A)o;
            System.out.println(c.getString());
        } catch(Exception e) {
            e.printStackTrace();
        }
    } 
}

或者下面這個更好的

public class C extends B {
    public static void main (String args[]){
        Class a = C.class.getSuperclass().getSuperclass();
        try {
            Method m = a.getDeclaredMethod("getString",null);
            System.out.println(m.invoke(a.newInstance(),null));
        } catch (Exception e) {
            e.printStackTrace();
        }
    } 
}

下一篇我來講一下怎么用反射調(diào)用私有屬性和方法(setAccessible)者疤。

晚安。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末叠赦,一起剝皮案震驚了整個濱河市驹马,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌除秀,老刑警劉巖糯累,帶你破解...
    沈念sama閱讀 206,602評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異册踩,居然都是意外死亡泳姐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評論 2 382
  • 文/潘曉璐 我一進(jìn)店門暂吉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來胖秒,“玉大人,你說我怎么就攤上這事慕的⊙指危” “怎么了?”我有些...
    開封第一講書人閱讀 152,878評論 0 344
  • 文/不壞的土叔 我叫張陵肮街,是天一觀的道長盗痒。 經(jīng)常有香客問我,道長低散,這世上最難降的妖魔是什么俯邓? 我笑而不...
    開封第一講書人閱讀 55,306評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮熔号,結(jié)果婚禮上稽鞭,老公的妹妹穿的比我還像新娘。我一直安慰自己引镊,他們只是感情好朦蕴,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評論 5 373
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著弟头,像睡著了一般吩抓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上赴恨,一...
    開封第一講書人閱讀 49,071評論 1 285
  • 那天疹娶,我揣著相機(jī)與錄音,去河邊找鬼伦连。 笑死雨饺,一個胖子當(dāng)著我的面吹牛钳垮,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播额港,決...
    沈念sama閱讀 38,382評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼饺窿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了移斩?” 一聲冷哼從身側(cè)響起肚医,我...
    開封第一講書人閱讀 37,006評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎向瓷,沒想到半個月后肠套,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡风罩,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評論 2 325
  • 正文 我和宋清朗相戀三年糠排,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片超升。...
    茶點(diǎn)故事閱讀 38,094評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡入宦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出室琢,到底是詐尸還是另有隱情乾闰,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評論 4 323
  • 正文 年R本政府宣布盈滴,位于F島的核電站涯肩,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏巢钓。R本人自食惡果不足惜病苗,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望症汹。 院中可真熱鬧硫朦,春花似錦、人聲如沸背镇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,286評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞒斩。三九已至破婆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胸囱,已是汗流浹背祷舀。 一陣腳步聲響...
    開封第一講書人閱讀 31,512評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人蔑鹦。 一個月前我還...
    沈念sama閱讀 45,536評論 2 354
  • 正文 我出身青樓夺克,卻偏偏與公主長得像箕宙,于是被迫代替她去往敵國和親嚎朽。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評論 2 345

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