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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

泛型方法与桥方法

發布時間:2023/12/13 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 泛型方法与桥方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  Java泛型中有存在一種方式叫做類型擦除,也就是說泛型在編譯期間進行類型檢驗上做到有效安全,但是在運行當中,會將該泛型類型用頂層父類(若無繼承關系則用Object)代替,然后再進行強轉換成目標類型,這種類型擦除也存在在泛型方法中,但是方法的擦除帶來了兩個復雜的問題。

  

public class ParentString<String> {String src;public void setSrc(String src){this.src=src;} } public class ChildString extends ParentString<String> {String s="childString";public void setSrc(String src){src=s;} }

  在類型擦除之后,代碼演變成如下的樣子

public class ChildString extends ParentString {String s="childString";public void setSrc(String src){src=s;} }

  但是,由于類型擦除,父類中的方法變成

setSrc(Object src)

  這個時候子類無法覆蓋父類的方法。

  由于參數的類型不同,這是兩個不同的方法,但是這種情況不應該出現的。考慮一下下面的語句序列

ChildString childString=new ChildString();ParentString<String> parentString=childString;parentString.setSrc("aaa");

  這里在一般的情況下是通過多態的關系,parentString引用了子類ChildString的方法,問題在于類型擦除與多態發生了沖突。要解決這個問題,就需要在ChildString中生成一個橋方法(bridge method,編譯器自動生成)

public void setSrc(String src){setSrc((String)src);}

  值得注意的還有一點,橋方法不僅用于泛型類型,目的是用來被合成保持多態。在一個方法覆蓋另一個方法時可以指定一個更嚴格的返回類型。

  還有另外一個知識點作為補充

  

?

  轉載請說明原文出處:http://www.cnblogs.com/xxzhuang/p/5968331.html? 多謝合作。

  

    

轉載于:https://www.cnblogs.com/xxzhuang/p/5968331.html

總結

以上是生活随笔為你收集整理的泛型方法与桥方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。