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

Java14帶來了5項新特性,能支持H5文本開發了

開發 后端
Java 14預定于3月17日發布。那么,14版究竟有什么新功能,對于整天寫代碼、維護代碼的Java開發者來說,哪些功能最有用呢?

Java 14預定于3月17日發布。那么,14版究竟有什么新功能,對于整天寫代碼、維護代碼的Java開發者來說,哪些功能最有用呢?

[[318118]]

以下為譯文:

第14版包含的JEP(Java Enhancement Proposals,Java增強提案)比12版和13版加起來還要多。在這篇文章中,我將主要討論以下幾點:

  •  改進的switch表達式,第一次出現在Java 12和13中,在Java 14中獲得了完全的支持
  •   instanceof支持模式匹配(語言特性)
  •  NullPointerException(JVM特性)

希望你在閱讀完本文后,積極地代碼中實驗這些功能,為Java團隊提供反饋,并為Java的發展做出貢獻。

1、Switch表達式

Java 14中的switch表達式將會永久存在。如果你需要回憶一下什么是switch表達式,可以參考下以前這兩篇文章(https://blogs.oracle.com/javamagazine/new-switch-expressions-in-java-12,https://blogs.oracle.com/javamagazine/inside-java-13s-switch-expressions-and-reimplemented-socket-api)。

在之前的發布中,switch表達式只是一個“預覽”階段的特性。我想提醒一下,“預覽”階段的特性的目的是為了收集反饋,這些特性可能會隨時改變,根據反饋結果,這些特性甚至可能會被移除,但通常所有預覽特性最后都會在Java中固定下來。

新的switch表達式的優點是,不再有缺省跳過行為(fall-through),更全面,而且表達式和組合形式更容易編寫,因此出現bug的可能性就更低。例如,switch表達式現在可以使用箭頭語法,如下所示: 

  1. var log = switch (event) {  
  2.     case PLAY -> "User has triggered the play button";  
  3.     case STOP, PAUSE -> "User needs a break";  
  4.     default -> {  
  5.         String message = event.toString();  
  6.         LocalDateTime now = LocalDateTime.now();  
  7.         yield "Unknown event " + message +   
  8.               " logged on " + now;  
  9.     }  
  10. }; 

2、文本塊

Java 13引入的一個預覽功能是文本塊。有了文本塊,多行的字符串字面量就很容易編寫了。這個功能在Java 14中進行第二次預覽,而且發生了一些變化。例如,多行文本的格式化可能需要編寫許多字符串連接操作和轉義序列。下面的代碼演示了一個HTML的例子: 

  1. String html = "<HTML>" +  
  2. "\n\t" + "<BODY>" +  
  3. "\n\t\t" + "<H1>\"Java 14 is here!\"</H1>" +  
  4. "\n\t" + "</BODY>" +  
  5. "\n" + "</HTML>"; 

有了文本塊,就可以簡化這一過程,只需使用三引號作為文本塊的起始和結束標記,就能編寫出更優雅的代碼: 

  1. String html = "" 
  2. <HTML>  
  3.   <BODY>  
  4.     <H1>"Java 14 is here!"</H1>  
  5.   </BODY>  
  6. </HTML>"""; 

與普通的字符串字面量相比,文本塊的表達性更好。更多的內容可以參考這篇文章(https://blogs.oracle.com/javamagazine/text-blocks-come-to-java)。

Java 14引入了兩個新的轉義序列。第一,可以使用新的 \s 轉義序列來表示一個空格。第二,可以使用反斜杠 \ 來避免在行尾插入換行字符。這樣可以很容易地在文本塊中將一個很長的行分解成多行來增加可讀性。

例如,現在編寫多行字符串的方式如下: 

  1. String literal =   
  2.          "Lorem ipsum dolor sit amet, consectetur adipiscing " +  
  3.          "elit, sed do eiusmod tempor incididunt ut labore " +  
  4.          "et dolore magna aliqua."; 

在文本塊中使用 \ 轉義序列,就可以寫成這樣: 

  1. String text = "" 
  2.                 Lorem ipsum dolor sit amet, consectetur adipiscing \  
  3.                 elit, sed do eiusmod tempor incididunt ut labore \  
  4.                 et dolore magna aliqua.\  
  5.                 """; 

3、instanceof的模式匹配

Java 14引入了一個預覽特性,有了它就不再需要編寫先通過instanceof判斷再強制轉換的代碼了。例如,下面的代碼: 

  1. if (obj instanceof Group) {  
  2.   Group group = (Group) obj;  
  3.   // use group specific methods  
  4.   var entries = group.getEntries();  

利用這個預覽特性可以重構為: 

  1. if (obj instanceof Group group) {  
  2.   var entries = group.getEntries();  

由于條件檢查要求obj為Group類型,為什么還要像第一段代碼那樣在條件代碼塊中指明obj為Group類型呢?這可能會引發錯誤。

這種更簡潔的語法可以去掉Java程序里的大多數強制類型轉換。(2011年的一篇針對相關語言特性的研究論文(http://www.cs.williams.edu/FTfJP2011/6-Winther.pdf)指出,24%的類型轉換都來自于instanceof后的條件語句。)

JEP 305解釋了這項改變,并給出了Joshuoa Bloch的著作《Effective Java》中的一個例子,演示了下面兩種等價的寫法: 

  1. @Override public boolean equals(Object o) {  
  2.     return (o instanceof CaseInsensitiveString) &&   
  3.             ((CaseInsensitiveString) o).s.equalsIgnoreCase(s);   

這段代碼嗎中冗余的CaseInsensitiveString強制類型轉換可以去掉,轉換成下面的方式: 

  1. @Override public boolean equals(Object o) {   
  2.     return (o instanceof CaseInsensitiveString cis) &&  
  3.             cis.s.equalsIgnoreCase(s);   

這個預覽特性很值得嘗試,因為它打開了通向更通用的模式匹配的大門。模式匹配的思想是為語言提供一個便捷的語法,根據特定的條件從對象中提取出組成部分。這正是instanceof操作符的用例,因為條件就是類型檢查,提取操作需要調用適當的方法,或訪問特定的字段。

換句話說,該預覽功能僅僅是個開始,以后該功能肯定能夠減少更多的代碼冗余,從而降低bug發生的可能性。

4、Record

另一個預覽功能就是record。與前面介紹的其他預覽功能一樣,這個預覽功能也順應了減少Java冗余代碼的趨勢,能幫助開發者寫出更精準的代碼。Record主要用于特定領域的類,它的位移功能就是存儲數據,而沒有任何自定義的行為。

我們開門見山,舉一個最簡單的領域類的例子:BankTransaction,它表示一次交易,包含三個字段:日期,金額,以及描述。定義類的時候需要考慮多個方面:

  •  構造器
  •  getter方法
  •  toString()
  •  hashCode()和equals()

這些部分的代碼通常由IDE自動生成,而且會占用很大篇幅。下面是生成的完整的BankTransaction類: 

  1. public class BankTransaction {  
  2.     private final LocalDate date;  
  3.     private final double amount;  
  4.     private final String description;  
  5.     public BankTransaction(final LocalDate date,   
  6.                            final double amount,   
  7.                            final String description) {  
  8.         this.date = date;  
  9.         this.amount = amount;  
  10.         this.description = description;  
  11.     }  
  12.     public LocalDate date() {  
  13.         return date;  
  14.     }  
  15.     public double amount() {  
  16.         return amount;  
  17.     }  
  18.     public String description() {  
  19.         return description;  
  20.     }  
  21.     @Override  
  22.     public String toString() {  
  23.         return "BankTransaction{" +  
  24.                 "date=" + date +  
  25.                 ", amount=" + amount +  
  26.                 ", description='" + description + '\'' +  
  27.                 '}';  
  28.     }  
  29.     @Override  
  30.     public boolean equals(Object o) {  
  31.         if (this == o) return true;  
  32.         if (o == null || getClass() != o.getClass()) return false;  
  33.         BankTransaction that = (BankTransaction) o;  
  34.         return Double.compare(that.amount, amount) == 0 &&  
  35.                 date.equals(that.date) &&  
  36.                 description.equals(that.description);  
  37.     }  
  38.     @Override  
  39.     public int hashCode() {  
  40.         return Objects.hash(date, amount, description);  
  41.     }  

Java 14提供了一種方法可以解決這種冗余,可以更清晰地表達目的:這個類的唯一目的就是將數據整合在一起。Record會提供equals、hashCode和toString方法的實現。因此,BankTransaction類可以重構如下: 

  1. public record BankTransaction(LocalDate date,  
  2.                               double amount,  
  3.                               String description) {} 

通過record,可以“自動”地得到equals,hashCode和toString的實現,還有構造器和getter方法。

要想嘗試這個例子,需要用preview標志編譯該文件: 

  1. javac --enable-preview --release 14 BankTransaction.java 

record的字段隱含為final。因此,record的字段不能被重新賦值。但要注意的是,這并不代表整個record是不可變的,保存在字段中的對象可以是可變的。

如果你有興趣閱讀更多關于record的內容,可以閱讀Ben Evans最近在《Java Magazine》上發表的文章(https://blogs.oracle.com/javamagazine/records-come-to-java)。

請繼續關注該功能。從培養新一代的Java開發者的視角來看,Record也很有意思。例如,如果你要培養初級開發者,那么record應該什么時候講呢?是在講OOP之前還是之后?

5、NullPointerException

一些人認為,拋出NullPointerException異常應該當做新的“Hello World”程序來看待,因為NullPointerException是早晚會遇到的。玩笑歸玩笑,這個異常的確會造成困擾,因為它經常出現在生產環境的日志中,會導致調試非常困難,因為它并不會顯示原始的代碼。例如,如下代碼: 

  1. var name = user.getLocation().getCity().getName(); 

在Java 14之前,你可能會得到如下的錯誤: 

  1. Exception in thread "main" java.lang.NullPointerException  
  2.     at NullPointerExample.main(NullPointerExample.java:5) 

不幸的是,如果在第5行是一個包含了多個方法調用的賦值語句(如getLocation()和getCity()),那么任何一個都可能會返回null。實際上,變量user也可能是null。因此,無法判斷是誰導致了NullPointerException。

在Java 14中,新的JVM特性可以顯示更詳細的診斷信息: 

  1. Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Location.getCity()" because the return value of "User.getLocation()" is null  
  2.     at NullPointerExample.main(NullPointerExample.java:5) 

該消息包含兩個明確的組成部分:

  •  后果:Location.getCity()無法被調用
  •  原因:User.getLocation()的返回值為null

增強版本的診斷信息只有在使用下述標志運行Java時才有效: 

  1. -XX:+ShowCodeDetailsInExceptionMessages 

下面是個例子: 

  1. java -XX:+ShowCodeDetailsInExceptionMessages NullPointerExample 

在以后的版本中,該選項可能會成為默認。

這項改進不僅對于方法調用有效,其他可能會導致NullPointerException的地方也有效,包括字段訪問、數組訪問、賦值等。

6、總結

Java 14提供了幾個新的預覽版語言特性和更新,能很好地幫助開發者完成日常工作。Java 14還引入了record,這是一種創建精確數據類的新方法。此外,NullPointerException的消息經過了改進,能顯示明確的診斷信息。switch表達式也成了Java 14的一部分。文本塊功能可以幫你處理多行字符串,這是在引入了兩個新的轉義序列之后的另一預覽功能。還有一項改動就是JDK Flight Recorder的事件流。

可見,Java 14帶來了許多創新。你應該嘗試一下這些功能,然后反饋給Java的開發團隊。 

 

責任編輯:龐桂玉 來源: Java編程
相關推薦

2015-08-14 10:42:05

2017-07-28 08:07:05

2024-04-28 09:01:06

React 19更新前端

2016-10-25 17:52:56

H5APP教材

2020-07-21 14:00:51

App小程序前端

2011-07-19 13:39:20

iOS HTML5

2015-11-10 11:38:06

2023-12-02 08:55:18

Paru 2.0

2014-04-15 15:45:22

Java8Java8教程

2022-09-21 11:53:56

無障礙訪問iOS安卓

2022-10-26 09:01:55

H5移動端調試

2011-08-30 09:07:30

HTML 5

2009-06-29 17:42:03

Tapestry5新特

2022-03-24 08:33:58

小游戲項目cmdvue3

2020-10-14 11:16:06

5G邊緣計算

2023-07-26 00:34:45

JavaOracle模式

2022-03-28 07:52:31

H5小游戲開發教程頁面基礎布局

2020-12-03 18:07:07

H5主題用戶

2018-05-18 15:05:25

JavaJava 10新特性

2021-06-08 05:53:31

H5 頁面項目劉海屏適配
點贊
收藏

51CTO技術棧公眾號

亚洲精品国产综合区久久久久久久| 中文字幕一区日韩精品欧美| 久久免费视频观看| 亚洲天堂网一区二区| 日韩av一卡| 中文字幕乱码日本亚洲一区二区| 91九色综合久久| 日本午夜小视频| 国产一区毛片| 日韩欧美一二区| www.四虎成人| 在线观看的网站你懂的| av电影在线观看一区| 日韩美女视频免费在线观看| 色欲一区二区三区精品a片| 91蝌蚪精品视频| 欧美性做爰猛烈叫床潮| 少妇一晚三次一区二区三区| 精品成人一区二区三区免费视频| 久久精品国产免费看久久精品| 欧美黄色片视频| 九九热免费在线| 国产三级精品三级在线观看国产| 欧美日韩一二三区| 色综合久久久久无码专区| 国产视频中文字幕在线观看| 久久免费偷拍视频| 国产欧美亚洲日本| 国产三区在线播放| 欧美aaaaa成人免费观看视频| 韩国日本不卡在线| 91成人福利视频| 欧美午夜寂寞| 日韩女优制服丝袜电影| 中日韩av在线播放| 亚洲欧美韩国| 亚洲aⅴ怡春院| 最新欧美日韩亚洲| 国产一级二级三级在线观看| av男人天堂一区| dy888夜精品国产专区| 国产精品老熟女视频一区二区| 国产精品久久久一区二区| 九九精品在线视频| 日韩成人毛片视频| 图片小说视频色综合| 亚洲偷欧美偷国内偷| 午夜一区二区三区免费| 国产精东传媒成人av电影| 欧美一区二区三区人| 五月激情婷婷在线| 色综合久久久| 在线综合视频播放| 久久人人爽人人片| 欧美在线在线| 亚洲成人网在线| 亚洲自拍偷拍精品| 国产人妖ts一区二区| 亚洲精品福利在线观看| 老熟妇精品一区二区三区| 粉嫩一区二区三区四区公司1| 欧美一级高清大全免费观看| 91亚洲一区二区| 精品国产乱码久久久久久樱花| 在线不卡中文字幕播放| 日本一二三四区视频| 国产不卡精品| 欧美成人video| 中国极品少妇xxxx| 久久久久久久久久久久久久久久久久久久 | 国产欧美精品久久| 欧美亚洲激情视频| 波多野结衣一本一道| 日韩精品一二区| 国产欧美日韩亚洲精品| 99在线观看免费| 国产suv一区二区三区88区| 99中文字幕| 后进极品白嫩翘臀在线视频| 91蜜桃免费观看视频| 欧美综合激情| 免费在线观看黄| 亚洲尤物在线视频观看| 久久久免费视频网站| 精品欧美日韩精品| 日韩欧美区一区二| 精品人妻一区二区三区视频| 日韩中文欧美| 欧美国产日韩二区| 日韩黄色片网站| 极品销魂美女一区二区三区| 国产精品一区二区在线观看| 极品美乳网红视频免费在线观看 | 欧美性片在线观看| 91精品国产91热久久久做人人| 久久精品无码专区| 国产亚洲欧美日韩在线观看一区二区 | 91人人澡人人爽| 欧美福利在线播放网址导航| 在线亚洲欧美视频| 欧美精品xxxxx| 日日夜夜免费精品| 99精彩视频在线观看免费| 欧美日韩在线精品一区二区三区激情综 | 欧美亚洲高清一区| 95视频在线观看| 日韩精品免费| 91精品国产成人| 国产精品一级视频| 久久综合狠狠综合久久综合88 | 国产成人无码精品久久二区三| 99热国内精品| 日本最新高清不卡中文字幕| 亚洲AV无码一区二区三区少妇| 久久精品水蜜桃av综合天堂| h无码动漫在线观看| 成人国产精品入口免费视频| 亚洲激情视频网站| 亚洲色图综合区| 石原莉奈在线亚洲二区| 国产一区国产精品| 国产激情视频在线| 欧美在线一二三四区| 国产精品伦子伦| 亚洲五月综合| 国产欧美一区二区三区四区 | 日韩在线免费av| www.欧美色| 91在线小视频| 日韩精品一区在线视频| 99视频这里有精品| 在线视频欧美性高潮| 在线观看免费av片| va亚洲va日韩不卡在线观看| 国产精品免费看久久久无码| 欧美视频免费看| 亚洲一区二区久久| 丰满少妇xoxoxo视频| 91丨porny丨中文| 免费不卡av在线| xxxxxhd亚洲人hd| 欧美久久精品午夜青青大伊人| 一区二区三区免费在线| 欧美国产精品一区二区三区| 黑鬼大战白妞高潮喷白浆| 日韩大胆成人| 4444欧美成人kkkk| 色吊丝在线永久观看最新版本| 亚洲国产精品久久不卡毛片| 制服下的诱惑暮生| 欧美1区3d| 99久久一区三区四区免费| 中国av在线播放| 4438成人网| www日韩在线| 国产精品夜夜爽| 国产内射老熟女aaaa| 久久综合偷偷噜噜噜色| 久久91亚洲人成电影网站 | 日韩av最新在线观看| 久久久.www| 高清不卡一二三区| 成人午夜视频在线观看免费| 噜噜噜狠狠夜夜躁精品仙踪林| 97精品国产97久久久久久春色| 少妇人妻一区二区| 欧美日韩国产专区| 久久成人激情视频| 久久精品国产第一区二区三区| 中文字幕乱码一区二区三区| 麻豆精品一区| 97色在线视频观看| 国产在线高清| 91精品国产乱| 日韩精品一区二区三| 久久老女人爱爱| 国产视频1区2区3区| 91精品亚洲| av一区二区三区免费| av小说在线播放| 精品无人区太爽高潮在线播放| 亚洲 日本 欧美 中文幕| 国产精品高潮呻吟| 国产欧美视频一区| 久久国产福利| 亚洲精品在线免费| 一区二区三区四区高清视频 | www.av中文字幕| 欧美色图一区| 99久久99久久精品国产片| 成人性生活av| 久久高清视频免费| 亚洲av成人精品一区二区三区在线播放| 日韩欧美在线视频| 男人在线观看视频| 久久一夜天堂av一区二区三区| 免费在线观看污网站| 极品裸体白嫩激情啪啪国产精品| 欧美一区二区三区精美影视| 韩国三级成人在线| 日韩av电影国产| 在线免费观看a视频| 亚洲一区二区久久| 色屁屁草草影院ccyycom| 欧美日韩国产在线观看| 久青草免费视频| 欧美高清在线一区| 国产chinese中国hdxxxx| 免费观看久久久4p| 熟女少妇在线视频播放| 午夜精品毛片| 日韩欧美一区二区三区久久婷婷| 97一区二区国产好的精华液| 国产精品直播网红| 亚洲天堂资源| 久久久久久999| 国产黄色在线观看| 视频在线一区二区| 国产高清视频在线播放| 精品国产麻豆免费人成网站| 亚洲一级黄色大片| 日韩欧美大尺度| 伊人国产在线观看| 亚洲激情校园春色| 日本女人性生活视频| 久久久久国产精品免费免费搜索 | 国产亚洲欧美日韩俺去了| av电影中文字幕| 国产在线视频一区二区| 中文字幕在线观看第三页| 国产一区白浆| www.日本在线播放| 欧美午夜电影在线观看| 超碰97免费观看| 手机亚洲手机国产手机日韩| 欧美一区二区三区四区在线观看地址| 国产精品久久久久av蜜臀 | 国产欧美一区| 蜜桃av噜噜一区二区三| 国产精品香蕉| 国产精品久久久久久久免费大片| 久久福利在线| 国产一区二区丝袜高跟鞋图片| 欧美在线va视频| 日韩av免费网站| 亚洲高清黄色| 国产精品女视频| 国产精品videossex撒尿| 国产精品高潮呻吟久久av无限| 丝袜美腿一区| 国产精品嫩草视频| 伊人久久一区| 5g国产欧美日韩视频| 日韩精品视频中文字幕| 亚洲最大av网| 岛国成人av| 国产一区二区免费电影| 欧美亚视频在线中文字幕免费| 久久99精品久久久久久秒播放器| 另类ts人妖一区二区三区| 久久精品日韩| 欧美日韩国产在线观看网站| 日韩欧美第二区在线观看| 第一社区sis001原创亚洲| 一区二区三区四区国产| 欧美激情91| 91九色丨porny丨国产jk| 亚洲制服少妇| 免费激情视频在线观看| 精品系列免费在线观看| 国产成人精品一区二区三区在线观看| 成人国产精品免费观看视频| 丰满大乳奶做爰ⅹxx视频| 2021国产精品久久精品| 日本欧美一区二区三区不卡视频| 亚洲猫色日本管| 国产成人免费观看视频| 欧美视频自拍偷拍| av网站在线观看免费| 亚洲精品97久久| 成人免费黄色网页| 欧美日韩高清区| 日韩精品av| 91精品久久久久久久久久另类 | 天天操中文字幕| 色天天综合色天天久久| 亚洲资源在线播放| 精品国产一区二区三区不卡| 黄色av网站在线看| 九九热精品视频国产| 偷拍自拍在线看| 成人性生交大片免费观看嘿嘿视频| 6080成人| 一区二区三区四区欧美| 影音先锋久久久| 污色网站在线观看| 99久久国产综合精品女不卡| 久久精品色妇熟妇丰满人妻| 亚洲午夜激情av| 在线观看国产精品入口男同| 精品国产伦一区二区三区观看方式| 九色国产在线观看| 欧美激情精品久久久久久大尺度| 亚洲精品在线影院| 国产精品久久久一区二区三区| 欧美少妇xxxx| 男人天堂1024| 国产成人在线免费观看| 日本理论中文字幕| 婷婷久久综合九色综合伊人色| 这里只有精品6| 亚洲女人被黑人巨大进入| 黄色在线观看视频网站| 国产在线98福利播放视频| 性欧美lx╳lx╳| 国产在线xxxx| 黑人精品欧美一区二区蜜桃 | 欧美日中文字幕| 日韩国产欧美亚洲| 国产91在线观看丝袜| 黑人狂躁日本娇小| 91电影在线观看| 天堂中文字幕av| 欧美国产视频一区二区| 亚洲影视资源| 在线观看免费91| 日韩激情中文字幕| 少妇真人直播免费视频| 午夜精品成人在线| 成人午夜视频一区二区播放| 久久综合五月天| 久久99国产精品二区高清软件| 欧美精品七区| 国产精品久久久久毛片大屁完整版 | 一区二区三区偷拍| 久久最新视频| 老鸭窝一区二区| 黄色成人在线免费| 日本激情一区二区| 久久久噜久噜久久综合| 日韩精品中文字幕一区二区| 熟女视频一区二区三区| 激情综合五月婷婷| 三级黄色录像视频| 欧美久久一二三四区| 日本a级在线| 国产一区在线播放| 国产精品久久久乱弄| 亚洲天堂av一区二区| 国产精品麻豆欧美日韩ww| 自拍偷拍福利视频| 中文字幕亚洲情99在线| 欧美成a人片免费观看久久五月天| 四虎永久在线精品免费一区二区| 日本美女视频一区二区| 亚洲精品国产91| 欧美视频三区在线播放| 免费av在线| 亚洲一区二区三区乱码aⅴ| 欧美日韩国产一区精品一区| www.四虎在线| 日韩欧美国产网站| 二区在线观看| 成人av资源在线播放| 欧美日韩hd| 永久免费未满蜜桃| 欧美日韩亚洲系列| www.av在线| 91在线视频成人| 亚洲精品人人| 免费看污片网站| 精品视频色一区| 尤物yw193can在线观看| 精品久久久久久中文字幕动漫| 麻豆9191精品国产| 国产精品综合激情| 日韩一卡二卡三卡国产欧美| 白浆在线视频| 精品国产免费久久久久久尖叫 | 国产高清av片| 香蕉成人伊视频在线观看| 黄色在线免费观看大全| 成人美女av在线直播| 国产精品日韩| 欧美另类69xxxx| 欧美mv日韩mv亚洲| 午夜日韩成人影院| 欧洲金发美女大战黑人| 99精品久久只有精品| 中文无码av一区二区三区| 欧美成在线视频| 曰本一区二区三区视频| 亚洲美女爱爱视频| 欧美日韩国产专区| 成人影院在线看| 日韩精品久久久毛片一区二区| 国产一区二区免费看| 亚洲不卡在线视频| 久久久久久久久久久久av| 日韩国产一区|