国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Java反射中method.isBridge() 橋接方法

橋接方法是 JDK 1.5 引入泛型后,為了使Java的泛型方法生成的字節(jié)碼和 1.5 版本前的字節(jié)碼相兼容,由編譯器自動(dòng)生成的方法。我們可以通過(guò)Method.isBridge()方法來(lái)判斷一個(gè)方法是否是橋接方法。

 假定接口 

public interface SuperClass<T> {
    void method(T t);
}

它的一個(gè)實(shí)現(xiàn)類(lèi)

public class AClass implements SuperClass<String> {
    @Override
    public void method(String s) {
    System.out.println(s);
  }
}

因?yàn)榉盒褪窃?.5引入的,為了向前兼容,所以會(huì)在編譯時(shí)去掉泛型(泛型擦除)。那么SuperClass接口中的method方法的參數(shù)在虛擬機(jī)中只能是Object。

它應(yīng)該是這個(gè)樣子:

public interface SuperClass {
    void method(Object  t);
}

 而 AClass 實(shí)現(xiàn)了SuperClass 接口,但是它的實(shí)現(xiàn)方法卻是:

    public void method(String s) {
    System.out.println(s);
  } 

根本就沒(méi)有實(shí)現(xiàn) void method(Object t) 方法。 這怎么回事,其實(shí)虛擬機(jī)自動(dòng)實(shí)現(xiàn)了一個(gè)方法。

AClass在虛擬機(jī)中是這個(gè)樣子:

public class AClass implements SuperClass  {
    public void method(String s) {
        System.out.println(s);
    }
    public void method(Object s) {
         this.method((String) s);
    }
}

這個(gè)void method(Object s)  就是橋接方法。

我們用這個(gè)命令查看

javap -p AClass.class

顯示如下:

Compiled from "AClass.java"
public class AClass implements SuperClass<java.lang.String> {
  public AClass();
  public void method(java.lang.String);
  public void method(java.lang.Object);
}

 我們用反射寫(xiě)個(gè)測(cè)試,看結(jié)果如何

    public static void main(String[] args) throws Exception {
        AClass obj = new AClass();
        Method m = AClass.class.getMethod("method", String.class);
        m.invoke(obj, "XXXXXXXXXXXXXXXXXX");
        System.out.println(m.isBridge());
        m = AClass.class.getMethod("method", Object.class);
        m.invoke(obj, "##################");
        System.out.println(m.isBridge());
    }

測(cè)試結(jié)果如下

XXXXXXXXXXXXXXXXXX
false
##################
true

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Sun certificate java programmer Test(3)
Java學(xué)習(xí)-注解和反射
2022年6月招聘考試試題(銀海)
JAVA類(lèi)繼承過(guò)程中其成員的一些問(wèn)題
軟件工程師( Java程序設(shè)計(jì))階段測(cè)試題
Java 繼承
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服