精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java8新特性系列-默認方法和靜態方法

開發 前端
在Java 8之前,默認情況下,接口中的所有方法都是公共的和抽象的。但是這一限制在Java 8中被打破了,Java 8允許開發人員在接口中添加新方法,而無需在實現這些接口的類中進行任何更改。

[[385113]]

 在Java 8之前,默認情況下,接口中的所有方法都是公共的和抽象的。但是這一限制在Java 8中被打破了,Java 8允許開發人員在接口中添加新方法,而無需在實現這些接口的類中進行任何更改。

為什么會有默認方法?

主要是為了方便擴展已有接口;如果沒有默認方法,假如給Java中的某個接口添加一個新的抽象方法,那么所有實現了該接口的類都得修改,影響將非常大。

舉個例子,Sortable 接口以及實現該接口的類SortableNumberCollection和SortableStringCollection。該接口有兩種方法:void sort(); 和T peek()。

  1. public interface Sortable<T> { 
  2.     void sort(); 
  3.     T peek(); 

 sort()方法用于對象排序,T peek()用于獲取指定元素,另外需要一個比較器類ObjectComparator來對對象進行排序。

  1. public class ObjectComparator implements Comparator<Comparable> { 
  2.     @Override 
  3.     public int compare(Comparable o1, Comparable o2) { 
  4.         return o1.compareTo(o2); 
  5.     } 

 SortableStringCollection是一個自定義集合類可以進行排序,并查看字符串指定元素,代碼如下:

  1. public class SortableStringCollection implements Sortable<String> { 
  2.  
  3.     private List<String> items = new ArrayList<>(); 
  4.  
  5.     public void add(String item) { 
  6.         items.add(item); 
  7.     } 
  8.  
  9.     @Override 
  10.     public void sort() { 
  11.         items.sort(new ObjectComparator()); 
  12.     } 
  13.  
  14.     @Override 
  15.     public String peek() { 
  16.         return items.get(0); 
  17.     } 

 同樣,SortableNumberCollection是一個自定義集合類,其中包含可以使用接口方法進行排序和查看的數字列表指定元素,代碼如下:

  1. public class SortableNumberCollection implements Sortable<Integer> { 
  2.  
  3.     private List<Integer> items = new ArrayList<>(); 
  4.  
  5.     public void add(Integer item) { 
  6.         items.add(item); 
  7.     } 
  8.  
  9.     @Override 
  10.     public void sort() { 
  11.         items.sort(new ObjectComparator()); 
  12.     } 
  13.  
  14.     @Override 
  15.     public Integer peek() { 
  16.         return items.get(0); 
  17.     } 

 在Java8之前如果對接口Sortable添加新方法:T sortAndPeek(),那么SortableStringCollection和

SortableNumberCollection都必須實現T sortAndPeek()方法。

Java8之后提供了一種新的實現方式,默認方法 default method,我們可以對Sortable進行如下改造:

  1. public interface Sortable<T> { 
  2.     void sort(); 
  3.     T peek(); 
  4.  
  5.     default T sortAndPeek(){    // New 'default method' added in the interface 
  6.         sort(); 
  7.         return peek(); 
  8.     } 
  9.  

 同時SortableStringCollection和SortableNumberCollection類不需要任何更改。這樣可以減少我們對原有代碼的改動。同時如果需要,還可以在實現此接口的任何類中重寫該方法T sortAndPeek()的默認實現。

在下圖中我們看到default Method不通的標識:


在多繼承中使用默認方法問題

如果兩個或多個接口具有相同的默認方法簽名,并且一個類實現了這兩個接口,則將引發編譯時錯誤。例如:

  1. public interface Interface1 { 
  2.     void methodOne(String str); 
  3.     default void newMethod(){ 
  4.         System.out.println("Interface1: Newly added method"); 
  5.     } 
  6.  
  7.  
  8.  
  9. public interface Interface2 { 
  10.     void methodTwo(String str); 
  11.     default void newMethod(){ 
  12.         System.out.println("Interface2: Newly added method"); 
  13.     } 
  14.  
  15.  
  16.  
  17. public class InterfaceImplementation implements Interface1, Interface2{ 
  18.     @Override 
  19.     public void methodOne(String str) { 
  20.         System.out.println("Overridden methodOne: " + str); 
  21.     } 
  22.  
  23.     @Override 
  24.     public void methodTwo(String str) { 
  25.         System.out.println("Overridden methodTwo: " + str ); 
  26.     } 

 此時代碼會提示如下異常:

  1. InterfaceImplementation inherits unrelated defaults for newMethod() from types Interface1 and Interface2 

要解決此問題,我們將必須重寫類InterfaceImplementation中的方法:

  1. public class InterfaceImplementation implements Interface1, Interface2{ 
  2.     @Override 
  3.     public void methodOne(String str) { 
  4.         System.out.println("Overridden methodOne: " + str); 
  5.     } 
  6.  
  7.     // newMethod implemented to resolve the conflict. 
  8.     @Override 
  9.     public void newMethod() { 
  10.         System.out.println("InterfaceImplementation: Newly added method"); 
  11.     } 
  12.  
  13.     @Override 
  14.     public void methodTwo(String str) { 
  15.         System.out.println("Overridden methodTwo: " + str ); 
  16.     } 

 我們總結一下:

  • 類中的方法優先級最高。類或父類中聲明的方法的優先級高于任何聲明為默認方法的優先級。
  • 如果無法依據第一條進行判斷,那么子接口的優先級更高:函數簽名相同時,優先選擇擁有最具體實現的默認方法的接口,即如果B繼承了A,那么B就比A更加具體。
  • 最后,如果還是無法判斷,繼承了多個接口的類必須通過顯式覆蓋和調用期望的方法,顯式地選擇使用哪一個默認方法的實現。

在Java 8中添加靜態方法

接口定義的靜態方法獨立于任何對象調用。所以,在調用靜態方法時,不需要實現接口,也不需要接口的實例,

就像“默認方法”一樣,“靜態方法”也可以添加到接口中。例如,我們可以添加一個靜態方法Direction getDefaultDirection(),該方法將返回默認Direction,例如:

  1. public interface Sortable<T> { 
  2.  
  3.     Direction defaultDirection = Direction.DESC
  4.  
  5.     enum Direction { 
  6.         ASC
  7.         DESC 
  8.     }; 
  9.  
  10.     void sort(); 
  11.     T peek(); 
  12.  
  13.     static Direction getDefaultDirection(){    // 'static method' added to the interface. 
  14.         return defaultDirection; 
  15.     } 

 在上面的示例中,可以使用類引用來調用靜態Direction getDefaultDirection()方法:

  1. Sortable.getDefaultDirection() 

對默認方法和靜態方法的一點思考

接口是設計模式中一種開閉原則的體驗,而java8賦予了接口新的特性,使得接口使用起來更加的得心應手了,這也有助于我們更加內聚自己的代碼結構了。Java源碼中也有很多場景使用到了默認方法,例如:Iterator接口,我們在開發中可以多使用一些新的特性從而提高開發效率及增加代碼的健壯性。

  1. public interface Iterable<T> { 
  2.  
  3.     Iterator<T> iterator(); 
  4.      
  5.     default void forEach(Consumer<? super T> action) { 
  6.         Objects.requireNonNull(action); 
  7.         for (T t : this) { 
  8.             action.accept(t); 
  9.         } 
  10.     } 
  11.      
  12.     default Spliterator<T> spliterator() { 
  13.         return Spliterators.spliteratorUnknownSize(iterator(), 0); 
  14.     } 
  15.      

 【編輯推薦】

 

責任編輯:姜華 來源: 今日頭條
相關推薦

2021-09-13 07:53:30

安全

2014-04-10 18:00:10

Java8Java8教程

2021-03-02 07:13:54

Java8版本升級

2021-02-22 11:51:15

Java開發代碼

2023-07-19 08:03:05

Future異步JDK

2024-10-09 08:42:03

2014-07-15 14:48:26

Java8

2025-06-26 08:10:00

Java8函數

2022-12-09 07:48:10

Java8Stream表達式

2022-12-30 09:24:23

Java8Stream操作

2009-08-27 16:24:48

擴展方法C# 3.0新特性

2014-03-28 11:08:16

Java 8多重繼承

2025-09-19 00:00:00

Java8HOT3Oracle

2014-10-20 13:57:59

JavaFX 8Java 8

2014-07-14 11:34:53

Java 8Nashorn

2017-10-25 11:05:14

Java

2015-05-25 09:45:16

Java多繼承深入解析

2020-12-10 10:11:52

Javastatic關鍵字

2014-04-11 12:49:00

Java8Java8教程

2014-03-19 11:04:14

Java 8Java8特性
點贊
收藏

51CTO技術棧公眾號

国产精品久久久久久妇女6080| 美女国产一区| 亚洲变态欧美另类捆绑| 北条麻妃69av| 欧美激情二区| 99久久99久久久精品齐齐| 国产精品电影一区| 国产精品第108页| 国产影视一区| 精品日韩一区二区三区| 日本999视频| 91视频欧美| 国产精品美女久久久久久久网站| 91偷拍精品一区二区三区| 国产精品人人人人| 你懂的成人av| 夜夜嗨av色一区二区不卡| 麻豆精品国产传媒| 黄色精品视频| 午夜久久久久久电影| 亚洲欧美日韩在线综合| 性xxxx18| 国产99久久久国产精品潘金| 国产精品美女www| 国产尤物在线视频| 国产一区二区三区四区老人| 中文字幕久精品免费视频| 91视频免费入口| 欧美亚洲二区| 日韩欧美高清视频| 欧美久久久久久久久久久久久久| 国产精品二线| 91女厕偷拍女厕偷拍高清| 国产精品久久久久久久久久久久午夜片 | 欧美一区二区三区免费观看| 欧美成人黄色网| 亚州av乱码久久精品蜜桃| 一本色道久久综合狠狠躁篇的优点| 中文字幕制服丝袜| 玖玖精品一区| 这里只有精品视频在线观看| 午夜在线观看av| 日本少妇一区| 欧美性xxxxx极品少妇| 亚洲精品乱码久久久久久自慰| av资源网在线播放| 午夜精品久久久久久久99水蜜桃| 轻点好疼好大好爽视频| 在线观看三级视频| 亚洲免费在线观看视频| 中国黄色录像片| fc2ppv国产精品久久| 日韩一区日韩二区| 日本丰满少妇黄大片在线观看| 久久国产精品一区| 综合在线观看色| 免费成人深夜夜行网站视频| 菠萝蜜视频国产在线播放| 亚洲青青青在线视频| 中文字幕av久久| 色女人在线视频| 亚洲一区二三区| 久久精品国产sm调教网站演员| 美女精品导航| 欧美日韩黄色大片| 国产视频在线视频| 免费成人高清在线视频| 日韩一级二级三级精品视频| 亚洲av综合色区无码另类小说| 成人精品动漫一区二区三区| 亚洲精品www久久久| 97伦伦午夜电影理伦片| 日韩毛片视频| 欧美大奶子在线| 久久露脸国语精品国产91| 亚欧美中日韩视频| 国产精品一香蕉国产线看观看| 97视频免费在线| 成人av电影在线观看| 欧美在线视频一区二区三区| 久久黄色美女电影| 同产精品九九九| 久久精品免费网站| 欧美电影院免费观看| 亚洲国产中文字幕久久网| 国产熟女一区二区| 午夜视频一区| 青草成人免费视频| 91极品身材尤物theporn| 国产99一区视频免费| 女同一区二区| 在线观看电影av| 富二代精品短视频| 男人午夜视频在线观看| 精品国产一区二区三区不卡蜜臂 | 一卡二卡三卡四卡| 国产精品精品| 性色av一区二区三区| 欧美高清69hd| 成人三级在线视频| 亚洲第一精品区| 欧美a级在线观看| 91精品综合久久久久久| av鲁丝一区鲁丝二区鲁丝三区| 欧美成人直播| 欧美在线观看一区二区三区| 国产日韩一级片| 国产偷v国产偷v亚洲高清| 伊人久久在线观看| 成人午夜在线| 亚洲精品自拍第一页| wwwav国产| 蜜臀精品久久久久久蜜臀| 精品视频第一区| 欧美性猛片xxxxx免费中国| 欧美三级日本三级少妇99| 50一60岁老妇女毛片| 综合一区av| 国产精品成人免费视频| 无套内谢的新婚少妇国语播放| 中文字幕日韩一区| 欧美日韩一区二区三区69堂| 亚洲三级精品| 992tv成人免费影院| 超碰免费在线97| 亚洲色图欧美偷拍| 日韩精品视频一二三| 国产剧情在线观看一区| 77777亚洲午夜久久多人| 亚洲黄色a级片| 亚洲日本在线天堂| 久草中文在线| 欧美亚洲综合久久| 黄瓜视频污在线观看| 亚洲视频日本| 亚洲iv一区二区三区| 一本一道波多野毛片中文在线| 狠狠躁夜夜躁人人爽天天天天97| 久久久久亚洲av无码网站| 中国成人一区| 92看片淫黄大片看国产片| 毛片在线视频| 91麻豆精品国产91久久久久久| 激情五月深爱五月| 久久精品999| 伊人久久av导航| 亚洲国产天堂| 日韩最新免费不卡| 国产精品欧美综合亚洲| 中文字幕综合网| 在线免费黄色网| 91成人精品视频| 5566av亚洲| 国产经典三级在线| 亚洲成人黄色网| 免费黄色网址在线| 国产丝袜美腿一区二区三区| av五月天在线| 99精品电影| 亚洲一区二区在线| 51漫画成人app入口| 精品香蕉一区二区三区| 无码人妻精品一区二区| 国产精品视频九色porn| 加勒比av中文字幕| 国产精品www.| 免费久久久一本精品久久区| 美女写真久久影院| 久久天天躁日日躁| 人妻一区二区三区| 欧美视频二区36p| 少妇av片在线观看| 精品综合免费视频观看| 国产奶头好大揉着好爽视频| 国产精品欧美大片| 国产成人精品一区二区在线| 天天影视久久综合| 亚洲第一国产精品| 国模私拍一区二区| 一二三四区精品视频| 国产吞精囗交久久久| 美女爽到高潮91| 青青草国产免费| 久久99影视| 91麻豆国产语对白在线观看| av福利导福航大全在线| 在线观看日韩www视频免费| 999久久久久久| 精品久久香蕉国产线看观看gif| 非洲一级黄色片| 国产成人a级片| 亚洲狼人综合干| 激情91久久| 亚洲日本理论电影| 狼人精品一区二区三区在线| 国产精品旅馆在线| 色在线免费观看| 久久久久999| 国际av在线| 欧美大片一区二区| 在线免费a视频| 天天色综合成人网| 国产极品国产极品| 国产精品午夜久久| 网站免费在线观看| 国产精品911| 一区二区三区国产免费| 亚洲国产日本| 国产日产欧美一区二区| 国产一区二区三区四区五区| 国产伦精品一区二区三区| 激情久久一区二区| 日产精品久久久一区二区福利| 青青青国内视频在线观看软件| 在线日韩第一页| 色视频在线观看| 亚洲高清免费观看高清完整版| 国产精品国产av| 欧美午夜精品一区| 国产suv精品一区二区33| 亚洲高清免费观看| 成熟的女同志hd| 国产精品免费人成网站| 亚洲精品乱码久久久久久久久久久久| 成人动漫视频在线| 亚洲av无码久久精品色欲| 九九国产精品视频| 午夜剧场高清版免费观看| 天堂精品中文字幕在线| 免费高清在线观看免费| 中日韩视频在线观看| av在线免费观看国产| 欧美精品1区| 青青在线免费视频| 中国成人一区| 欧美日韩dvd| 国产综合自拍| 人妻无码一区二区三区四区| 99国产**精品****| 精品一区二区成人免费视频| 999国产精品| 91手机视频在线| 天天超碰亚洲| 欧美 国产 精品| 欧美日韩国产探花| 少妇一晚三次一区二区三区| 欧美成人高清| 欧美高清中文字幕| 亚洲欧洲视频| www一区二区www免费| 亚洲一区二区伦理| 日韩毛片在线免费看| 男男视频亚洲欧美| 中文字幕亚洲欧洲| 国产又黄又大久久| 国产精品一区二区在线免费观看| 成人激情文学综合网| 亚洲色图14p| 国产欧美日韩亚州综合 | 日韩码欧中文字| 国精品人伦一区二区三区蜜桃| 亚洲欧美怡红院| 国产亚洲精品久久777777| 偷拍与自拍一区| 国产精品第6页| 制服丝袜中文字幕亚洲| 亚洲av无码国产精品永久一区 | 欧美a在线看| 久久久精品日本| а√天堂资源官网在线资源| 人九九综合九九宗合| 欧美高清影院| 91沈先生作品| 精品国内亚洲2022精品成人| 欧洲av一区| 亚洲啊v在线观看| 免费av手机在线观看| 日韩精品一二三| 欧美国产在线一区| 91网站在线观看视频| 北条麻妃在线观看视频| 亚洲超碰97人人做人人爱| 欧美亚洲另类小说| 日韩欧美国产成人一区二区| 婷婷婷国产在线视频| 久久久精品久久久| sis001欧美| 91视频免费进入| 国产成人精品三级高清久久91| 正义之心1992免费观看全集完整版| 一区在线免费| 亚洲综合欧美在线| 99久久免费视频.com| 在线免费看av网站| 粉嫩老牛aⅴ一区二区三区| 国产一区二区三区黄片| 亚洲精品动漫久久久久| 黄色精品在线观看| 日韩av手机在线观看| 亚洲综合网狠久久| 亚洲精品一区二| 亚洲欧美不卡| 亚洲成a人无码| 国产精品乱码久久久久久| 国产成人愉拍精品久久| 欧美一区二区视频免费观看| 欧美日韩国产亚洲沙发| 久久久久久有精品国产| 亚洲综合伊人| 日韩一本精品| 亚洲一区二区网站| 国产精品一区二区在线免费观看| 国产精品久久久久一区二区三区 | 91精品国产日韩91久久久久久| 全部免费毛片在线播放网站| 久久99精品久久久久久噜噜 | 成人欧美一区二区三区视频| 成人无号精品一区二区三区| 国产xxxxx在线观看| 成人av在线一区二区| 午夜免费激情视频| 欧美人与z0zoxxxx视频| 国产免费av在线| 青青草原一区二区| 天堂av一区二区三区在线播放| 欧美大黑帍在线播放| 国产一区二区三区日韩 | 亚洲 欧美 自拍偷拍| 久久久亚洲影院| 国产suv精品一区| 日韩精品在线视频免费观看| 国产精品白丝av| 卡通动漫亚洲综合| 4438x亚洲最大成人网| 素人av在线| 91麻豆国产语对白在线观看| 68国产成人综合久久精品| 天天色天天干天天色| 亚洲欧美视频在线观看| 99热精品在线播放| 欧美华人在线视频| 国产精品国产| 妞干网在线视频观看| 99久久婷婷国产综合精品| 日韩在线视频免费播放| 日韩精品在线视频观看| 久久人体大尺度| 天堂精品视频| 男人的天堂亚洲一区| 成人无码av片在线观看| 欧美色区777第一页| 三区四区电影在线观看| 91久久国产精品| 激情av一区| 风间由美一二三区av片| 日本道在线观看一区二区| 免费播放片a高清在线观看| 国产精品大陆在线观看| 四季av一区二区凹凸精品| 亚洲成人av免费观看| 亚洲午夜成aⅴ人片| 五十路在线观看| 国产精品第一区| 伊人久久大香线蕉综合四虎小说| 欧美xxxx日本和非洲| 欧美性精品220| jizzjizz在线观看| 99一区二区| 日韩精品一级中文字幕精品视频免费观看| 亚洲理论片在线观看| 91精品视频网| jizzjizz中国精品麻豆| 日本一区二区在线| 黑人精品欧美一区二区蜜桃 | 黄视频在线观看网站| 91偷拍精品一区二区三区| 亚洲少妇诱惑| 久久国产高清视频| 精品免费国产二区三区| 大胆人体一区二区| 一本色道久久99精品综合| 国产成人在线视频网址| 精品国产一区二区三区四| 日韩亚洲欧美中文高清在线| 国产精品白丝av嫩草影院| 另类小说色综合| 亚洲自拍欧美精品| 第一视频专区在线| 国产经典一区二区三区| 日本亚洲欧美天堂免费| 免费一级片在线观看| 亚洲欧洲中文天堂| 日本伊人久久| www.日本xxxx| 午夜伊人狠狠久久| 蜜桃视频在线观看www社区 | 麻豆影院在线| 欧美日韩一区二区视频在线| 国产一区二区h| 日韩不卡高清视频|