精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

91久久精品日日躁夜夜躁欧美| 一道本视频在线观看| 91精品无人成人www| 蜜桃视频在线观看网站| 大胆国模一区二区三区| 亚洲综合不卡| 日韩一区二区麻豆国产| 视频在线99re| 毛片视频网站在线观看| 91亚洲精品视频在线观看| 欧美国产乱子伦 | 77777少妇光屁股久久一区| 亚洲免费黄色网| 国产区视频在线| 亚洲黄色免费| 日韩精品中午字幕| 免费观看黄色大片| 国产理论视频在线观看| 日韩国产一区| 欧美日精品一区视频| 欧洲一区二区在线观看| 九九热精品视频在线| 日韩成人av在线资源| 天天做天天摸天天爽国产一区 | 特级西西444www大胆免费看| 开心激情综合| 午夜婷婷国产麻豆精品| 国产乱码精品一区二区三区中文 | 精品福利视频导航| 美女黄色片网站| av在线无限看| 国产欧美综合一区| 日韩中文字幕免费观看| 亚洲视频观看| 欧美一区二区三区四区视频| 亚洲精品国产系列| 成人h动漫精品一区二区下载| 国产乱人伦丫前精品视频| 亚洲精品五月天| 亚洲一区制服诱惑| 精品欧美一区二区久久久久| 欧美大陆国产| 国产精品久久久久久一区二区三区| 国产精品久久久久久久久免费 | 日日摸夜夜添夜夜添国产精品 | 亚洲精品在线观看视频| 92裸体在线视频网站| 97久久久久久久| 欧美在线视屏| 在线观看一区二区精品视频| 成人午夜影院在线观看| 欧美老女人性生活视频| 黄网站在线免费| 国产大陆a不卡| 日韩在线一区二区三区免费视频| 日韩人妻精品无码一区二区三区| 男人天堂综合网| 久久成人麻豆午夜电影| 一区二区福利视频| 97公开免费视频| 尤物视频在线免费观看| 久久国产综合精品| 中文字幕欧美日韩精品 | 欧美.日韩.国产.一区.二区| 亚洲一区二区黄| 日本www.色| 日韩av大片站长工具| 久久久www成人免费毛片麻豆| 成人欧美一区二区| 国产精品久久777777换脸| 日韩精品视频网站| 国产成人综合精品在线| 日韩一级片在线免费观看| 国产精品1luya在线播放| 日韩视频一区二区三区在线播放| www.午夜av| 日本在线看片免费人成视1000| 国产亚洲精品超碰| 成人两性免费视频| 欧美成人手机视频| 午夜精品999| 欧美激情精品在线| 亚洲第一页av| 亚洲一区有码| 亚洲码国产岛国毛片在线| 中文字幕日韩一区二区三区 | 亚洲精品男同| 97视频免费在线观看| 成人免费无遮挡无码黄漫视频| 伊人久久综合一区二区| 日韩欧美中文第一页| 国产xxxxx视频| 中文成人在线| 欧美tickling网站挠脚心| 久久久福利影院| 国产精品毛片久久久| 日韩精品一二三四区| 无码熟妇人妻av| 欧美一二区在线观看| 中文字幕亚洲一区二区三区五十路| 欧美另类z0zx974| 九色精品蝌蚪| 第一福利永久视频精品| 色一情一乱一伦一区二区三欧美 | 亚洲少妇中文字幕| 中文字幕中文字幕精品| 88在线观看91蜜桃国自产| 麻豆tv在线播放| 秋霞国产精品| 午夜av一区二区| 91看片在线免费观看| 精品视频一区二区三区| 亚洲精品影视在线观看| 潘金莲一级黄色片| 天天躁日日躁成人字幕aⅴ| 亚洲欧美在线免费观看| 俄罗斯女人裸体性做爰| 青春草免费在线视频| 国产精品乱码人人做人人爱| 一区二区三区在线视频看| 中文字幕资源网在线观看| 久久久久久久av麻豆果冻| 亚洲高清乱码| 91超碰在线播放| 亚洲国产乱码最新视频| 日韩一级特黄毛片| 欧美极品免费| 精品少妇一区二区三区视频免付费| 亚洲AV无码国产精品| 视频欧美一区| 欧美一区二区三区在线观看视频| 污污污www精品国产网站| 国内精品视频| 亚洲视频国产视频| 久草视频在线免费看| 91九色精品| 色天天综合狠狠色| 日产欧产va高清| 久久成人久久爱| 美女精品国产| 日本电影在线观看| 欧美一级在线视频| 秋霞网一区二区三区| 一本一本久久| 韩剧1988免费观看全集| 国产精品久久久久久久久久久久久久久久久久 | 日本高清不卡码| 亚洲视频1区| 亚洲free性xxxx护士hd| 婷婷在线免费观看| 激情欧美一区二区三区在线观看| 欧美床上激情在线观看| 国产一级一级片| 久88久久88久久久| 日本一区免费观看| 在线观看福利电影| 欧美性69xxxx肥| 无码成人精品区在线观看| 永久91嫩草亚洲精品人人| 国产精品入口尤物| 可以在线观看的av| 色综合激情五月| 欧美精品卡一卡二| 天堂久久av| 欧美成人精品在线观看| 国产精品自拍电影| 一区二区在线观看视频在线观看| 日韩视频在线免费播放| 不卡亚洲精品| 欧美色网站导航| 黄色a一级视频| 久久精品毛片| 国产精品电影网| 高清在线观看av| 欧美日韩在线精品一区二区三区激情 | 国产精品亚洲综合久久| 97人人模人人爽人人喊38tv| 俄罗斯一级**毛片在线播放| 午夜精品影院在线观看| 国产女人18毛片水真多18| 亚洲视频观看| 精品乱码一区二区三区| 搞黄视频在线观看| 欧美三级韩国三级日本一级| 糖心vlog免费在线观看| 国产一区二区久久| 乱熟女高潮一区二区在线| 2020最新国产精品| 欧美成人网在线| 色香蕉在线视频| 色婷婷综合久久久久中文| 日韩视频在线观看免费视频| 久久国产精品一区二区| 久久国产精品免费观看| 成人h动漫精品一区二区器材| 97国产一区二区精品久久呦 | 亚洲欧美日韩另类| 一本色道久久综合熟妇| 国产寡妇亲子伦一区二区| 国产成人精品免费看在线播放 | 精选一区二区三区四区五区| 美女日韩欧美| 日韩在线观看成人| 黄色美女一级片| 色综合天天综合色综合av| 日韩福利在线视频| 国产盗摄精品一区二区三区在线 | 欧美日韩欧美一区二区| 欧美色图亚洲激情| 久久精品国产在热久久| 成人黄色av片| 91综合在线| 久久伊人一区| 国产免费av国片精品草莓男男| 久久久爽爽爽美女图片| 亚洲天堂手机版| 亚洲综合久久久久| 精品无码人妻一区二区免费蜜桃| 国产精品综合在线视频| 很污的网站在线观看| 久久精品国产68国产精品亚洲| www.成人av.com| 国产精品亲子伦av一区二区三区| 久久久久久18| 九色视频网站在线观看| 日韩美一区二区三区| www.久久视频| 久久婷婷综合激情| 大陆极品少妇内射aaaaa| 色综合天天爱| 国产成人女人毛片视频在线| 久久99久久99精品免观看软件| 久久91精品国产| 国产精品久久欧美久久一区| 亚洲成人自拍网| 久久人妻无码aⅴ毛片a片app | 精品九九在线| 99视频在线免费观看| 日韩久久99| 欧美在线性视频| 天堂91在线| 欧美视频免费在线观看| 免费三级在线观看| 蜜臀久久久99精品久久久久久| 五月天av影院| 色天天久久综合婷婷女18| 鲁片一区二区三区| 国产精品自在| 国产精品白丝jk白祙| 激情综合五月| 国产欧美va欧美va香蕉在| 亚洲精品传媒| 亚洲欧洲第一视频| 黄色av网址在线| 欧美一区二区在线不卡| 国产一区二区女内射| 欧美日韩五月天| 天天操夜夜操视频| 91久久香蕉国产日韩欧美9色| 久久久久无码精品国产| 一区二区在线观看av| 日本黄色免费片| 中文字幕一区二区不卡| 国产综合精品久久久久成人av| 久久综合久久鬼色中文字| 国产视频久久久| 97人洗澡人人免费公开视频碰碰碰| 成人激情在线播放| 超碰网在线观看| 久草在线资源福利站| 久久久精品美女| 麻豆av免费在线观看| 日韩一级欧美一级| 欧美老妇交乱视频| 理论片中文字幕| 精品国产一区二区亚洲人成毛片 | 久久夜色精品国产噜噜av小说| 成人情视频高清免费观看电影| 免费观看亚洲天堂| 国产精品二区在线观看| 波多野结衣欧美| 久久国产精品一区二区三区四区 | 99精品欧美一区二区| 国产调教视频一区| 国产欧美小视频| 韩国精品一区二区| 在线视频观看一区二区| 久久国产精品区| 亚洲天堂小视频| 成人av网址在线观看| 欧美bbbbb性bbbbb视频| 91亚洲精品乱码久久久久久蜜桃| 凹凸日日摸日日碰夜夜爽1| 久久综合导航| 免费在线精品视频| 欧美特黄a级高清免费大片a级| 亚洲 欧美 综合 另类 中字| 亚洲综合日本| 午夜视频在线网站| 成人午夜短视频| 色欲av无码一区二区三区| 国产精品欧美久久久久一区二区| 欧美性生交大片| 岛国av在线不卡| 一级久久久久久久| 欧美一区二区播放| 黄色片一区二区三区| 亚洲美女精品成人在线视频| 国产最新视频在线| 久久久999精品免费| 国产一二三在线| 国产激情综合五月久久| 成人免费在线观看视频| 99热在线国产| 精品欧美激情在线观看| 日韩精品一区二区三区四| 在线日韩网站| 在线观看福利一区| 国产精品久久777777毛茸茸| 亚洲xxxx在线| 亚洲一区 视频| 欧美性xxxx极品高清hd直播| 国产三级按摩推拿按摩| 亚洲精品视频二区| 婷婷成人激情| 欧亚精品在线观看| 日本在线一区二区三区| 欧美日本亚洲| 日韩精品一区二区三区中文在线 | 亚洲影视中文字幕| 日本韩国欧美超级黄在线观看| 永久免费精品视频网站| 久久动漫亚洲| www.四虎精品| 亚洲视频一区二区在线| 亚洲少妇18p| 国产精品视频第一区| 免费在线不卡视频| 欧美成人a视频| 米奇777四色精品人人爽| 日韩av电影手机在线| 粉嫩av一区二区| 99久久99久久精品| 美女尤物久久精品| 久久久老熟女一区二区三区91| |精品福利一区二区三区| 亚洲第一视频区| 日韩欧美精品网站| 天堂成人在线观看| 欧美福利视频在线| 国产精品麻豆| 在线电影看在线一区二区三区| 日韩电影免费在线| 一级黄色性视频| 欧美性猛交xxxx乱大交蜜桃| 日韩一级在线播放| 久久视频中文字幕| 日韩国产91| 中文字幕日韩一区二区三区| 久久国产精品99精品国产| 先锋影音av在线| 在线观看亚洲精品视频| 男女网站在线观看| 欧洲一区二区视频| 日韩超碰人人爽人人做人人添| 美女黄色免费看| 99久久免费视频.com| 国产成人亚洲欧洲在线| 日韩电影大片中文字幕| 午夜影院在线观看国产主播| 精品视频一区在线| 久久狠狠婷婷| 欧美大波大乳巨大乳| 欧美日韩国产中文字幕| 亚洲色图欧美视频| 国产98色在线| 精品99在线| 116极品美女午夜一级| 91亚洲精品一区二区乱码| 久久久久久久久黄色| 亚洲性线免费观看视频成熟| 精品亚洲美女网站| 亚洲视频欧美在线| 国产剧情在线观看一区二区| 九九免费精品视频| 亚洲精品v欧美精品v日韩精品| 肉丝一区二区| 国产91网红主播在线观看| 区一区二视频| 在线播放免费视频| 欧美日韩一区二区在线播放| 搞黄视频在线观看| 96精品久久久久中文字幕| 激情久久婷婷| www.日本一区| 国产精品理伦片| 国产成人精品亚洲精品色欲| 午夜欧美大片免费观看| 精品国产91乱码一区二区三区四区| 欧美午夜aaaaaa免费视频|