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

語法糖甜不甜?巧用枚舉實現“狀態”轉換限制

開發 架構
本質上,JVM 并不支持語法糖,語法糖只存在于編譯期。當編譯器將 .java 源文件編譯成 .class 字節碼文件時,會進行解語法糖的操作,來還原最原始的基礎語法結構。

[[423672]]

語法糖

語法糖(Syntactic sugar),也被譯為糖衣語法,是由英國計算機科學家彼得·約翰·蘭達(Peter J. Landin)發明的一個術語,指計算機語言中添加的某種語法,這種語法對語言的功能并沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性,從而減少程序代碼出錯的機會。——摘抄自百度百科

本質上,JVM 并不支持語法糖,語法糖只存在于編譯期。當編譯器將 .java 源文件編譯成 .class 字節碼文件時,會進行解語法糖的操作,來還原最原始的基礎語法結構。

我們所熟悉的編程語言中幾乎都會包含語法糖,當然 JAVA 也不例外。JAVA 中的語法糖包含條件編譯、斷言、switch 支持 String 與枚舉、可變參數、自動裝箱/拆箱、枚舉、內部類、泛型擦除、增強for循環、lambda表達式、try-with-resources等等。今天我們先來了解下枚舉。

枚舉類

JDK5 提供了一種新的特殊的類——枚舉類,一般在類對象有限且固定的場景下使用,用來替代類中定義常量的方式。枚舉相較于常量更加直觀且類型安全。

枚舉類的使用非常簡單,用 enum 關鍵字來定義,多個枚舉變量直接用逗號隔開。我們先來定義一個簡單的枚舉類 OrderStatus.java

  1. public enum OrderStatus { 
  2.     //未支付、已支付、退款中、退款成功、退款失敗; 
  3.     NO_PAY, PAY, REFUNDING, REFUNDED, FAIL_REFUNDED, ; 

在其他類中使用 enum 變量的時候,只需要【類名.變量名】就可以了,和使用靜態變量一樣。另外,枚舉類型可以確保 JVM 中僅存在一個常量實例,所以我們可以放心的使用“ ==”來比較兩個變量。

注意事項:

枚舉類的第一行必須是枚舉項,最后一個枚舉項后的分號是可以省略的,但是如果枚舉類有其它的東西,這個分號就不能省略。建議不要省略!

枚舉變量最好大寫,多個單詞之間使用”_”隔開(比如:NO_PAY)。

反編譯

我們可以先通過 javac 命令或者 IDEA 的編譯功能將OrderStatus.java 編譯為OrderStatus.class 字節碼文件,然后用DJ Java Decompiler 反編譯器對 .class 文件進行反編譯。

如果需要 DJ Java Decompiler 反編譯器的小伙伴可以私信阿Q獲取!

  1. public final class OrderStatus extends Enum 
  2.  
  3.     //該方法會返回包括所有枚舉變量的數組,可以方便的用來做循環。 
  4.     public static OrderStatus[] values() 
  5.     { 
  6.         return (OrderStatus[])$VALUES.clone(); 
  7.     } 
  8.  
  9.     //根據傳入的字符串,轉變為對應的枚舉變量。 
  10.     //前提是傳的字符串和定義枚舉變量的字符串一抹一樣,區分大小寫。 
  11.     //如果傳了一個不存在的字符串,那么會拋出異常。 
  12.     public static OrderStatus valueOf(String name
  13.     { 
  14.         return (OrderStatus)Enum.valueOf(com/itcast/java/enumpack/OrderStatus, name); 
  15.     } 
  16.  
  17.     private OrderStatus(String s, int i) 
  18.     { 
  19.         super(s, i); 
  20.     } 
  21.  
  22.     public static final OrderStatus NO_PAY; 
  23.     public static final OrderStatus PAY; 
  24.     public static final OrderStatus REFUNDING; 
  25.     public static final OrderStatus REFUNDED; 
  26.     public static final OrderStatus FAIL_REFUNDED; 
  27.     private static final OrderStatus $VALUES[]; 
  28.  
  29.     static  
  30.     { 
  31.         NO_PAY = new OrderStatus("NO_PAY", 0); 
  32.         PAY = new OrderStatus("PAY", 1); 
  33.         REFUNDING = new OrderStatus("REFUNDING", 2); 
  34.         REFUNDED = new OrderStatus("REFUNDED", 3); 
  35.         FAIL_REFUNDED = new OrderStatus("FAIL_REFUNDED", 4); 
  36.         $VALUES = (new OrderStatus[] { 
  37.             NO_PAY, PAY, REFUNDING, REFUNDED, FAIL_REFUNDED 
  38.         }); 
  39.     } 

如源碼所示:

  • 編譯器會自動幫我們創建一個 final 類型的類繼承 Enum 類,所以枚舉類不能被繼承。
  • 會自動生成私有構造方法,當然我們也可以定義構造方法,但必須是私有的,這樣就不能在別處聲明此類的對象了。
  • 枚舉項會被自動添加 public static final 修飾,并定義為 OrderStatus 類型,并在靜態代碼塊中被初始化。
  • 并提供了 values() 和 valueOf(String name) 的靜態方法。

我們定義的枚舉變量實際上是編譯器幫我們自動生成了構造函數。

所有枚舉類都是 Enum 的子類,枚舉類可以實現一個或多個接口。

Enum

Enum 是所有 Java 語言枚舉類型的公共基類,實現了 Comparable 和 Serializable 接口。它包含 final 類型的 name 和 ordinal (此枚舉常量的序號,從0開始)屬性,下面我們來了解下它的方法

  • protected Enum(String name, int ordinal);——構造方法;
  • public String toString();——返回 name 字段,即枚舉定義枚舉變量的字符串;
  • protected final Object clone();——拋出 CloneNotSupportedException 異常,保證枚舉類永遠不會被克隆;
  • public final ClassgetDeclaringClass();——返回與此枚舉常量的枚舉類型對應的類對象;
  • protected final void finalize();—— 枚舉類不能有 finalize 方法;
  • readObject(ObjectInputStream in);& readObjectNoData();—— 拋出InvalidObjectException 異常,防止默認反序列化;

擴展

枚舉類中可以自定義屬性

自定義的屬性值最好用 private final 修飾,防止生成的 set 方法在使用時修改屬性值,使代碼更加安全。

枚舉類中可以自定義構造函數

構造函數必須為 private 修飾,防止在別處聲明此類對象。

枚舉類可以自定義方法,枚舉項可以選擇性覆蓋自定義的方法。

  1. public enum OrderStatus{ 
  2.     NO_PAY("未支付",0), 
  3.     PAY("已支付",1){ 
  4.         @Override 
  5.         public void printOrderStatus() { 
  6.             System.out.println("已支付"); 
  7.         } 
  8.     }, 
  9.     REFUNDING("退款中",2), 
  10.     REFUNDED("退款成功",3), 
  11.     FAIL_REFUNDED("退款失敗",4), 
  12.     ; 
  13.  
  14.     private final String name
  15.     private final int status; 
  16.  
  17.     private OrderStatus(String name,int status){ 
  18.         this.name = name
  19.         this.status = status; 
  20.     } 
  21.  
  22.     public void printOrderStatus(){ 
  23.         System.out.println("打印訂單狀態"); 
  24.     } 
  25.  
  26.  
  27. public class EnumTest { 
  28.     public static void main(String[] args) { 
  29.         OrderStatus.PAY.printOrderStatus(); 
  30.         OrderStatus.NO_PAY.printOrderStatus(); 
  31.     } 

枚舉類也可以有抽象方法,但是枚舉項必須重寫該方法。

枚舉類實現接口

與普通類一樣,實現接口的時候需要實現接口的抽象方法,也可以讓枚舉類的不同對象實現不同的行為。

  1. //定義一個接口 
  2. public interface Order { 
  3.     void printOrderStatus(); 
  4.  
  5. //枚舉類實現該接口 
  6. public enum OrderStatus implements Order
  7.     NO_PAY("未支付",0){ 
  8.         @Override 
  9.         public void printOrderStatus() { 
  10.             System.out.println("未支付"); 
  11.         } 
  12.     }, 
  13.     PAY("已支付",1){ 
  14.         @Override 
  15.         public void printOrderStatus() { 
  16.             System.out.println("已支付"); 
  17.         } 
  18.     }, 
  19.     REFUNDING("退款中",2){ 
  20.         @Override 
  21.         public void printOrderStatus() { 
  22.             System.out.println("退款中"); 
  23.         } 
  24.     }, 
  25.     REFUNDED("退款成功",3){ 
  26.         @Override 
  27.         public void printOrderStatus() { 
  28.             System.out.println("退款成功"); 
  29.         } 
  30.     }, 
  31.     FAIL_REFUNDED("退款失敗",4){ 
  32.         @Override 
  33.         public void printOrderStatus() { 
  34.             System.out.println("退款失敗"); 
  35.         } 
  36.     }, 
  37.     ; 
  38.  
  39.     private final String name
  40.     private final int status; 
  41.  
  42.     private OrderStatus(String name,int status){ 
  43.         this.name = name
  44.         this.status = status; 
  45.     } 

此時查看編譯后的文件,會發現除了生成 OrderStatus.class 文件之外,還生成了多個 .class 文件:

它們是 OrderStatus.class 中生成的匿名內部類的文件。

狀態轉換

需求

訂單是電商項目中不可缺少的組成部分,而訂單狀態的轉換也是我們經常討論的問題。我們都知道訂單狀態的轉換是有一定的邏輯性的,不可以隨意轉換。

例:你想購買某個商品,只是把它加入了購物車,此時應該是未支付狀態。如果來個請求想把它轉換為退款狀態,那么系統應該拋出提示信息“狀態轉換失敗,請先完成購買!”

接下來我們就用枚舉來完成一下訂單狀態轉換的限制。

實現

枚舉類定義:

  1. public enum OrderStatus{ 
  2.     NO_PAY("未支付",0){ 
  3.         @Override 
  4.         public Boolean canChange(OrderStatus orderStatus) { 
  5.             switch (orderStatus){ 
  6.                 case PAY: 
  7.                     return true
  8.                 default
  9.                     return false
  10.             } 
  11.         } 
  12.     }, 
  13.     PAY("已支付",1){ 
  14.         @Override 
  15.         public Boolean canChange(OrderStatus orderStatus) { 
  16.             //因為退款接口一般都會有延遲,所以會先轉化為“退款中”狀態 
  17.             switch (orderStatus){ 
  18.                 case REFUNDING: 
  19.                     return true
  20.                 default
  21.                     return false
  22.             } 
  23.         } 
  24.     }, 
  25.     REFUNDING("退款中",2){ 
  26.         @Override 
  27.         public Boolean canChange(OrderStatus orderStatus) { 
  28.             switch (orderStatus){ 
  29.                 case REFUNDED: 
  30.                 case FAIL_REFUNDED: 
  31.                     return true
  32.                 default
  33.                     return false
  34.             } 
  35.         } 
  36.     }, 
  37.     REFUNDED("退款成功",3), 
  38.     FAIL_REFUNDED("退款失敗",4), 
  39.     ; 
  40.  
  41.     private final String name
  42.     private final int status; 
  43.  
  44.     private OrderStatus(String name,int status){ 
  45.         this.name = name
  46.         this.status = status; 
  47.     } 
  48.  
  49.     //自定義轉換方法 
  50.     public Boolean canChange(OrderStatus orderStatus){ 
  51.         return false
  52.     } 

調用方法:

  1. public class EnumTest { 
  2.  
  3.     public static void main(String[] args) { 
  4.         Boolean aBoolean = OrderStatus.NO_PAY.canChange(OrderStatus.PAY); 
  5.         String statusStr = aBoolean?"可以":"不可以"
  6.         System.out.println("是否可以完成狀態轉換:"+ statusStr); 
  7.  
  8.         Boolean flag = OrderStatus.REFUNDED.canChange(OrderStatus.FAIL_REFUNDED); 
  9.         String flagStr = flag?"可以":"不可以"
  10.         System.out.println("是否可以完成狀態轉換:"+ flagStr); 
  11.     } 

返回結果:

 

這樣我們就用枚舉類實現了訂單狀態轉換的限制。此例子只是為狀態轉換提供一種思路,具體的流程還需要根據自己系統中的業務來具體處理。

 

責任編輯:武曉燕 來源: 阿Q說代碼
相關推薦

2016-06-02 15:10:12

SwiftSelector

2016-10-14 14:04:34

JAVA語法main

2020-12-08 07:51:53

Java語法糖泛型

2024-09-11 16:34:38

語法糖Java語言

2022-02-14 08:04:02

Go語法糖編譯器

2010-01-22 17:55:23

VB.NET語法糖

2024-10-11 15:04:35

KafkaLeader選舉

2022-02-17 13:46:15

SSH命令內網

2019-05-23 11:42:04

Java語法糖編程語言

2024-10-31 15:16:35

2023-09-11 08:20:17

對象閉包底層

2019-06-05 13:05:47

PHP語法糖編碼

2022-08-04 14:38:49

vue3.2setup代碼

2023-09-01 10:00:17

2009-08-18 12:52:33

C#枚舉類型

2011-08-08 12:44:30

IP安全策略遠程登錄

2012-03-31 16:42:24

2025-05-28 08:25:00

JavaScript代碼開發

2018-07-30 16:32:25

應屆生認知誤區

2024-03-15 08:45:31

Vue 3setup語法
點贊
收藏

51CTO技術棧公眾號

极品蜜桃臀肥臀-x88av| 欧美视频在线播放一区| 国产av一区二区三区精品| 午夜视频精品| 日韩精品视频在线播放| 亚洲黄色av网址| av在线麻豆| 99久久免费视频.com| 国产精品国产三级国产aⅴ9色| 顶级黑人搡bbw搡bbbb搡| 大香伊人久久精品一区二区| 在线免费观看视频一区| 免费极品av一视觉盛宴| 你懂的免费在线观看| 国产一区二三区好的| 欧美在线视频导航| 色视频www在线播放国产成人| 免费网站在线观看视频| 国产中文在线视频| 国产成人自拍高清视频在线免费播放| 欧美一性一乱一交一视频| 欧美成人777| 国产一区二区精品久| 日韩欧美不卡在线观看视频| 欧美日韩大尺度| caoprom在线| 亚洲日本欧美天堂| 婷婷亚洲婷婷综合色香五月| 日本黄色免费视频| 国产精品综合二区| 国产精品视频99| 久久久久在线视频| 亚洲伊人网站| 久久免费精品日本久久中文字幕| 大地资源高清在线视频观看| 国产免费久久| 精品对白一区国产伦| 亚洲最大天堂网| 欧美日韩不卡| 午夜视频在线观看一区| 轻点好疼好大好爽视频| 国产色在线观看| 中文字幕成人av| 日本一区二区三不卡| 色wwwwww| 白白色 亚洲乱淫| av观看久久| 国产黄色av片| 国产乱码字幕精品高清av| 国产日韩在线视频| 伊人网免费视频| 日韩不卡一区二区三区| 国产97色在线|日韩| 久久精品五月婷婷| 国产v亚洲v天堂无码久久久| 第一中文字幕在线| 亚洲国产精品一区二区久久| 男人j进女人j| caoporm免费视频在线| 中文字幕日韩一区| 一区二区三区av| 欧美边添边摸边做边爱免费| 国产精品每日更新| 亚洲精品一区二区三区av| 国产51人人成人人人人爽色哟哟| 国产亚洲一区二区三区四区| 日韩高清国产精品| 91大神在线网站| 亚洲人精品午夜| 亚洲精品少妇一区二区| 黄视频在线免费看| 亚洲成av人**亚洲成av**| 成人中文字幕在线播放| 中文不卡1区2区3区| 在线一区二区三区做爰视频网站| 婷婷丁香激情网| 国产成人免费视频网站视频社区 | 欧美一级免费| 制服丝袜激情欧洲亚洲| 色婷婷狠狠18禁久久| 韩国女主播一区二区三区| 亚洲精品一区在线观看香蕉| 丁香花五月婷婷| 欧美jjzz| 欧美专区在线视频| 一二区在线观看| 成人网在线免费视频| 久久久久久久久久久一区| 成人在线高清视频| 亚洲精品中文在线影院| 99精品在线免费视频| 91av一区| 亚洲成年人影院在线| 波多野结衣a v在线| 91精品国产乱码久久久久久久| 欧美精品第一页在线播放| 在线观看 亚洲| 国产美女娇喘av呻吟久久| 国产偷久久久精品专区| av每日在线更新| 午夜久久久影院| 一区二区免费av| 久久a级毛片毛片免费观看| 亚洲一品av免费观看| 久草资源在线视频| 日韩精品电影在线| 国产精品麻豆免费版| 91精彩视频在线观看| 欧美日韩亚洲高清| 一级日本黄色片| 欧美日韩亚洲在线观看| 久久人人爽人人爽人人片av高清| 最新国产中文字幕| 97精品超碰一区二区三区| 正在播放一区二区三区| 超级碰碰久久| 欧美精品一区二区久久久| 色欲一区二区三区精品a片| 久久精品三级| 激情小说网站亚洲综合网| 超鹏97在线| 欧美色手机在线观看| 亚洲自拍偷拍一区二区 | 亚洲成熟丰满熟妇高潮xxxxx| 精品国产一级| 中文字幕在线国产精品| 日本在线播放视频| 成人国产免费视频| 在线观看av的网址| 玖玖玖视频精品| 日韩在线观看高清| 波多野结衣高清视频| 99re热视频精品| 欧美精品自拍视频| 永久免费精品视频| 欧美激情精品久久久久久大尺度| ,亚洲人成毛片在线播放| 欧美国产成人在线| 手机看片福利盒子久久| 亚洲精品**不卡在线播he| 国内成人精品视频| 精品国产va久久久久久久| 日韩理论片一区二区| www午夜视频| 欧美中文字幕一区二区| 国产精品黄色av| 国产精品一区二区婷婷| 色狠狠综合天天综合综合| 国产伦精品一区二区三区妓女| 亚洲三级网站| 久久久久久国产精品mv| 少妇淫片在线影院| 亚洲理论在线a中文字幕| 五月婷婷视频在线| 久久久久久久免费视频了| 激情六月丁香婷婷| 免费久久精品| 国产精品久久久久久久久久新婚| 在线观看av黄网站永久| 欧美日本在线观看| 懂色av懂色av粉嫩av| 国产精品羞羞答答xxdd| 很污的网站在线观看| 久久精品国产亚洲5555| 欧美亚洲国产视频小说| 精品久久久久一区二区三区 | 精品盗摄女厕tp美女嘘嘘| 国产成人精品最新| av片在线看| 欧美一区二区高清| 久久9999久久免费精品国产| 99re免费视频精品全部| 亚洲一区二区蜜桃| 久久久久久久久久久9不雅视频| 4444kk亚洲人成电影在线| 黄色在线看片| 亚洲天堂男人天堂女人天堂| 91国产免费视频| 亚洲a一区二区| 伊人网在线视频观看| 国产在线一区观看| 国产3p露脸普通话对白| 国产一区不卡| 99视频国产精品免费观看| 精品极品在线| 上原亚衣av一区二区三区| 国产v片在线观看| 狠狠躁夜夜躁久久躁别揉| 妖精视频在线观看免费| 国产精品一级片| 丁香啪啪综合成人亚洲| 91亚洲国产高清| 精品免费视频123区| 无人区在线高清完整免费版 一区二| 波霸ol色综合久久| 五月天激情婷婷| 欧美日本一道本| 在线观看黄网站| 亚洲日本成人在线观看| 88久久精品无码一区二区毛片| 国产在线精品一区在线观看麻豆| 日本韩国欧美在线观看| 99久久综合狠狠综合久久aⅴ| 国产亚洲情侣一区二区无| 国产精品伦一区二区| 国内精品久久久久久久久| 午夜国产福利在线| 日韩成人av在线播放| 国产99对白在线播放| 日韩欧美亚洲成人| 欧美黑人精品一区二区不卡| 亚洲国产成人在线| 日本黄色录像片| 国产伦精品一区二区三区免费迷| 免费观看成人在线视频| 精品成人一区| 国产免费xxx| 第一会所sis001亚洲| 久久99精品久久久久久久青青日本| 成人豆花视频| 国产欧美精品日韩| 欧美男女交配| 午夜精品免费视频| 在线欧美三级| 精品国偷自产在线视频| 成人av毛片| 国产一区二区三区日韩欧美| 五月天婷婷在线播放| 精品999在线播放| 国产高清视频免费| 91精品国产欧美一区二区成人| 国产成人自拍偷拍| 色999日韩国产欧美一区二区| 日本亚洲色大成网站www久久| 亚洲精品老司机| 成人免费毛片xxx| 国产精品久久久一区麻豆最新章节| 91视频免费观看网站| 久久亚洲精华国产精华液| 网站免费在线观看| a级精品国产片在线观看| 成人啪啪18免费游戏链接| 国产福利视频一区二区三区| 交换做爰国语对白| 国产乱码精品一区二区三| 亚洲制服中文字幕| 国产伦精品一区二区三区免费迷 | 欧美午夜网站| 91精品久久久久久蜜桃| 日韩欧美中文在线观看| 69174成人网| 欧美日韩午夜电影网| av色综合网| av不卡一区二区| 国产麻豆一区二区三区在线观看| 极品尤物一区| 欧美日韩一区综合| 日韩国产一区| 欧美爱爱视频网站| 欧美 日韩 国产精品免费观看| 国产911在线观看| 极品av少妇一区二区| 怡红院av亚洲一区二区三区h| 国产亚洲网站| 免费看国产黄色片| 国产一区二区成人久久免费影院 | 欧美电影完整版在线观看| 精品国产一二| 欧美手机视频| 国产日韩欧美大片| 亚洲第一精品影视| 成人在线观看a| 精品一区二区三区蜜桃| 日本中文字幕有码| 久久久蜜臀国产一区二区| 亚洲色图27p| 亚洲国产一二三| 无码人妻精品一区二区50| 欧美综合一区二区| 国产裸体无遮挡| 日韩成人在线观看| 日本最新在线视频| 久久久久久伊人| 日韩欧美一区二区三区免费观看| 国产美女主播一区| 黑色丝袜福利片av久久| 欧美性大战久久久久| 亚洲一级淫片| 一本色道无码道dvd在线观看| 国产一区二区91| 国产交换配乱淫视频免费| 亚洲图片欧美激情| av黄色在线播放| 91精品国产综合久久精品图片| 天天射天天操天天干| 中文字幕日韩有码| 成人高潮aa毛片免费| 国产精品美女久久久久av超清| 91精品国产自产精品男人的天堂 | 欧美日免费三级在线| 超碰在线播放97| 一色桃子一区二区| 9999热视频在线观看| 国产日韩亚洲欧美| 久久99久久人婷婷精品综合 | 精品一区二区在线免费观看| 中文字幕免费高清视频| 中文字幕一区二区在线播放 | √天堂8资源中文在线| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 色中文字幕在线观看| 国产日韩精品视频一区二区三区 | 亚洲一区二区三区视频在线播放 | 国产成人福利夜色影视| 精品日本一区二区三区| 欧美成人高清| 色噜噜狠狠永久免费| 久久久久国产一区二区三区四区| 久艹视频在线观看| 7777精品伊人久久久大香线蕉超级流畅| 亚洲AV第二区国产精品| 欧美另类精品xxxx孕妇| 日本免费成人| 亚洲第一综合| 久久亚洲图片| 青青草视频成人| 精品福利在线视频| 亚洲精品网站在线| 久久国产精品网站| 日本黄色成人| 一区二区不卡在线视频 午夜欧美不卡' | 亚洲国产精品二区| 久久婷婷国产麻豆91天堂| 免费高清视频在线一区| 免费av在线一区二区| 一区二区国产在线观看| 色婷婷免费视频| 性久久久久久久久久久久| 开心激情综合网| 欧美丰满老妇厨房牲生活| 青草伊人久久| 日本香蕉视频在线观看| 粉嫩av一区二区三区粉嫩| 青青草国产在线观看| 欧美成人一区二区三区在线观看| www在线观看播放免费视频日本| 91影视免费在线观看| 91精品综合| 男人的天堂免费| 亚洲国产aⅴ天堂久久| 国产成人自拍一区| 97精品视频在线| 欧美一区自拍| 亚洲成熟丰满熟妇高潮xxxxx| 久久久久久免费毛片精品| 成人免费一级片| 最好看的2019年中文视频| 亚洲91在线| 老司机激情视频| 成人午夜精品一区二区三区| 国产精品第一页在线观看| 亚洲精品国精品久久99热| 成人性生交大片免费观看网站| 日本不卡一区| 久久www免费人成看片高清| 高h视频免费观看| 亚洲第一视频在线观看| 欧美成人性网| 在线电影看在线一区二区三区| 国产在线国偷精品免费看| 久久综合亚洲色hezyo国产| 亚洲精品乱码久久久久久金桔影视| 高清不卡亚洲| 中文字幕日韩精品一区二区| 国产成人在线视频播放| 在线观看国产亚洲| 深夜精品寂寞黄网站在线观看| 警花av一区二区三区| 日本日本19xxxⅹhd乱影响| 中文一区在线播放| a级片在线播放| 欧美中文字幕在线播放| 日本精品三区| 美国黄色一级视频| 91黄色免费网站| 中文字幕在线观看网站| 免费成人在线观看av| 国内精品不卡在线| 日韩精品1区2区| 欧美成人精品h版在线观看| 特黄特色欧美大片| 欧洲美女亚洲激情| 欧美性猛交xxxx免费看漫画| 麻豆最新免费在线视频| 精品一卡二卡三卡四卡日本乱码| 美女高潮久久久| 国产尤物在线视频| 久久精品视频导航| 沈樵精品国产成av片| 美女流白浆视频|