国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Java枚舉深度解讀,看這篇就夠了

共 12222字,需瀏覽 25分鐘

 ·

2020-09-18 14:08

點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

? 作者?|??濤GuoGuo的跟屁蟲丶博Ke?

來源 |? urlify.cn/aaamQf

66套java從入門到精通實(shí)戰(zhàn)課程分享

Java枚舉

1、枚舉類概念的理解與定義

  • 一個(gè)類的對(duì)象是有限個(gè),確定的,我們稱此為枚舉類。

  • 當(dāng)需要定義和維護(hù)一組常量時(shí),強(qiáng)烈建議使用枚舉類。

  • 如果一個(gè)枚舉類中只有一個(gè)對(duì)象,則可以作為單例模式的實(shí)現(xiàn)方式。

通俗的說:一個(gè)類被設(shè)計(jì)為包含固定實(shí)例數(shù)量的特殊類,我們給他的定義是枚舉類。

注意:
1.枚舉類不能被 new 出來,枚舉類因?yàn)槟J(rèn)的類修飾符為 final 所以也不能被派生(繼承),同理枚舉類也不能為當(dāng)作實(shí)現(xiàn)。
2.枚舉類自身可以實(shí)現(xiàn)接口,既可以進(jìn)行統(tǒng)一實(shí)現(xiàn)重寫接口抽象方法,也可以按照枚舉類型單個(gè)實(shí)現(xiàn)重寫。


2、枚舉類的定義

關(guān)于枚舉類的定義,這塊主要想和大家分享兩種方式

  1. jdk 5.0之前,自定義枚舉類方式

  2. jdk 5.0之后,Enum關(guān)鍵字方式定義


3、實(shí)踐

(一)、準(zhǔn)備工作

我們新建一個(gè) Java Project ,并創(chuàng)建一個(gè)包,以及一個(gè)測試類

(二)、自定義枚舉的三種方式(jdk 5.0 之前)

1. 定義一個(gè)抽象類,在抽象類中定義常量進(jìn)行維護(hù),我們接下來以 Java 類庫中的 Calendar 類示例來進(jìn)行說明

新建一個(gè)類 EnumDemo01.java 代碼如下:

package?org.taoguoguo;
import?java.util.Calendar;

/**
?*?@author?taoGG
?*?@description?jdk?5.0?之前?抽象類枚舉方案Demo
?*?@create?2020-09-13?14:20
?*/
public?class?EnumDemo01?{
????public?static?void?main(String[]?args)?{
????????Calendar?calendar?=?Calendar.getInstance();
????????System.out.println(calendar.get(1));
????}
}

Console 結(jié)果輸出:

2020
Process?finished?with?exit?code?0

如果熟悉?Calendar API?的小伙伴 應(yīng)該馬上能反應(yīng)過來,這個(gè)是獲取當(dāng)前的年份,類似的值還有

3?-?一年中的第幾個(gè)星期
4?-?一年中的第幾個(gè)月
5?-?當(dāng)前的日期?
......

但是這么多值,我們怎么能記得住呢?萬一我輸入錯(cuò)誤,隨便取了一個(gè)范圍怎么辦?

沒錯(cuò),這是 jdk 5.0之前的痛點(diǎn),為了解決實(shí)例數(shù)量固定,便于維護(hù)這些問題,在jdk 5.0之后更新Enum枚舉類解決了這個(gè)問題。那在jdk 5.0之前官方是怎么做的呢?難道需要我們一個(gè)個(gè)去記住?Calendar?的數(shù)字?

實(shí)際上官方本身,采用的就是我們現(xiàn)在說的第一種方式,在抽象類中定義常量進(jìn)行維護(hù)

現(xiàn)在我們將代碼做些修改:

package?org.taoguoguo;
import?java.util.Calendar;

/**
?*?@author?taoGG
?*?@description?jdk?5.0?之前?抽象類枚舉方案Demo
?*?@create?2020-09-13?14:20
?*/
public?class?EnumDemo01?{
????public?static?void?main(String[]?args)?{
????????Calendar?calendar?=?Calendar.getInstance();
????????System.out.println(calendar.get(Calendar.YEAR));
????}
}

我們運(yùn)行進(jìn)行輸出:

2020
Process?finished?with?exit?code?0

結(jié)果與之前一致,這時(shí)我們就清楚,在開發(fā)過程中作為開發(fā)者我們肯定愿意使用?Calendar.YEAR?這種寫法,一來方便記憶,二來可讀性高。那么官方的做法時(shí)怎樣的呢?我們點(diǎn)進(jìn)去源碼看一下

  1. 首先?Calendar?本身是一個(gè)抽象類,實(shí)現(xiàn)了序列化、克隆、以及比較排序接口,這邊和我們枚舉沒有太大關(guān)系,我們繼續(xù)往下看

  2. 在抽象類中,定義了很多個(gè)靜態(tài)常量進(jìn)行維護(hù),而當(dāng)我們需要使用時(shí),直接調(diào)用,這樣就比我們寫一個(gè)個(gè)的具體值要方便和易用了。

2. 定義一個(gè)接口,在接口中定義常量維護(hù)枚舉值

我們新建一個(gè)interface CustomerInf.java

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description?接口常量維護(hù)枚舉值
?*?@create?2020-09-13?15:47
?*/
public?interface?CustomerInf?{
???int?RED?=?1;
???int?GREEN?=?2;
???int?BLUE?=?3;
}

在?EnumTest?進(jìn)行測試

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description?Java枚舉測試類
?*?@create?2020-09-13?14:54
?*
?*/
public?class?EnumTest?{
????public?static?void?main(String[]?args)?{
????????System.out.println(CustomerInf.RED);
????}
}

測試結(jié)果:

1
Process?finished?with?exit?code?0

這種做法我們達(dá)到了和在抽象類中維護(hù)常量相同的目的。上面這兩種做法都非常的簡單易用,但也有弊端。比如我們只知道一個(gè)狀態(tài)值,當(dāng)我們要獲取狀態(tài)的屬性或者相關(guān)的內(nèi)容時(shí),我們該怎么做呢?

下面我們使用第三種方式,自定義枚舉類,這種基本上達(dá)到和 Enum 關(guān)鍵字相同的作用,但有一點(diǎn)不足就是會(huì)較為復(fù)雜

3.自定義枚舉類,通過為類私有化構(gòu)造器和固定實(shí)例對(duì)象進(jìn)行枚舉維護(hù)

新建一個(gè)class SeasonEnum.java,代碼如下:

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?15:58
?*/
public?class?SeasonEnum?{
????//1.聲明枚舉對(duì)象的屬性
????private?final?String?seasonName;
????private?final?int?code;

????//2.私有化類的構(gòu)造器
????private?SeasonEnum(String?seasonName,int?code){
????????this.seasonName?=?seasonName;
????????this.code?=?code;
????}

????//3.提供當(dāng)前枚舉類的多個(gè)對(duì)象?public?static?final
????public?static?final?SeasonEnum?SPRING?=?new?SeasonEnum("春天",100);
????public?static?final?SeasonEnum?SUMMER?=?new?SeasonEnum("夏天",200);
????public?static?final?SeasonEnum?AUTUMN?=?new?SeasonEnum("秋天",300);
????public?static?final?SeasonEnum?WINTER?=?new?SeasonEnum("冬天",400);

????//4.為類提供獲取屬性的方法
????public?String?getSeasonName()?{
????????return?seasonName;
????}
????public?int?getCode()?{
????????return?code;
????}
????//5.重寫toString方法
????@Override
????public?String?toString()?{
????????return?"SeasonEnum{"?+
????????????????"seasonName='"?+?seasonName?+?'\''?+
????????????????",?code="?+?code?+
????????????????'
}';
????}
}

新建一個(gè)class SeasonEnumTest 進(jìn)行測試,當(dāng)我們通過自定義枚舉類引用實(shí)例對(duì)象時(shí),如下圖可以看到,我們已經(jīng)可以獲取到我們的枚舉對(duì)象了。

獲取到枚舉對(duì)象,我們當(dāng)然也可以獲取到對(duì)應(yīng)的屬性及方法,這種可用性就提高了很多,我們在開發(fā)程序進(jìn)行判斷,可以根據(jù)各種枚舉值的指定屬性來進(jìn)行,提高了代碼的可維護(hù)性。

SeasonEnumTest 測試代碼

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?16:04
?*/
public?class?SeasonEnumTest?{
????public?static?void?main(String[]?args)?{
????????SeasonEnum?spring?=?SeasonEnum.SPRING;
????????System.out.println("自定義枚舉類對(duì)象:"?+?spring);
????????System.out.println("自定義枚舉類屬性:"?+?spring.getSeasonName());
????????System.out.println("自定義枚舉類屬性:"?+?spring.getCode());
????}
}


根據(jù)我們上面的自定義枚舉類方式,我們基本已經(jīng)實(shí)現(xiàn)了枚舉的功能了,但是就像上面說到的,如果開發(fā)中枚舉類型較多,開發(fā)多個(gè)這樣的自定義枚舉類會(huì)非常的耗時(shí),所以 jdk 5.0 之后,推出了 Enum 關(guān)鍵字定義枚舉類

(三)Enum 關(guān)鍵字定義枚舉類(jdk 5.0之后)

enum?全稱為?enumeration,是jdk 5.0 中引入的新特性,在Java 中被?enum?關(guān)鍵字修飾的類型就是枚舉類型

我們通過代碼來示例來講解和理解?enum?的用法,還是用我們剛剛自定以枚舉類的例子,看看使用enum如何來寫

新建一個(gè)Java class ,Kind?類型選擇?enum?如圖:

枚舉類創(chuàng)建注意:

  • 枚舉實(shí)例必須在?enum關(guān)鍵字聲明的類中顯式的指定(首行開始的以第一個(gè)分號(hào)結(jié)束)

  • 枚舉不允許使用new,clone,反射,序列化手動(dòng)創(chuàng)建枚舉實(shí)例

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?16:23
?*/
public?enum?Season?{
????SPRING("春天",100),
????SUMMER("夏天",200),
????AUTUMN("秋天",300),
????WINTER("冬天",400);

????private?final?String?seasonName;
????private?final?int?code;

????Season(String?seasonName,?int?code){
????????this.seasonName?=?seasonName;
????????this.code?=?code;
????}

????public?String?getSeasonName()?{
????????return?seasonName;
????}
????public?int?getCode()?{
????????return?code;
????}
}

使用?SeasonTest?測試類進(jìn)行測試:

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?16:27
?*/
public?class?SeasonTest?{
????public?static?void?main(String[]?args)?{
????????Season?spring?=?Season.SPRING;
????????System.out.println(spring);
????}
}


輸出結(jié)果:

SPRING
Process?finished?with?exit?code?0

注意,在enmu 枚舉類中如果沒有重寫 toString方法,會(huì)默認(rèn)使用Enum類本身提供的 toString 方法,返回枚舉類名稱,因?yàn)槎x的枚舉類默認(rèn)隱式繼承于java.lang.Enum

1.枚舉類主要方法介紹


  • values()??:該方法可以返回當(dāng)前枚舉類型的對(duì)象數(shù)組,可以很方便的遍歷所有枚舉值。一般我們可以根據(jù)枚舉類的相關(guān)屬性通過此方法遍歷獲取對(duì)應(yīng)的枚舉對(duì)象及枚舉值

  • valueOf(String str)?: 根據(jù)枚舉類名稱獲取枚舉類對(duì)象

  • toString(): 默認(rèn)使用 java.lang.Enum的 toString方法,返回當(dāng)前對(duì)象常量的名稱,枚舉類推薦重寫返回自定義友好描述

  • name(): 返回當(dāng)前枚舉對(duì)象名稱,和toString作用上類似,當(dāng)時(shí)toString支持重寫,name方法是不能重寫的,在本質(zhì)上 toString 也是調(diào)用的 name方法,枚舉定義 name 方法就是為了返回枚舉對(duì)象名稱,而 toString 應(yīng)該根據(jù)需要進(jìn)行重寫

  • ordinal(): 返回當(dāng)前枚舉對(duì)象的序號(hào), 實(shí)現(xiàn)了 Comparable 接口,表明它是支持排序的 可以通過?Collections.sort?進(jìn)行自動(dòng)排序比較此枚舉與指定對(duì)象的順序

  • compareTo(): 基于ordinal進(jìn)行序號(hào)大小比較

方式演示代碼,小伙伴們可以自行運(yùn)行輸出一下,看看各個(gè)方法的作用,熟悉一下相關(guān)的方法api

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?16:27
?*/
public?class?SeasonTest?{
????public?static?void?main(String[]?args)?{
????????System.out.println("========values()方法=======");
????????for?(Season?season?:?Season.values())?{
????????????System.out.println(season);
????????}
????????System.out.println("===========================");
?
????????System.out.println("========valueOf方法========");
????????Season?spring?=?Season.valueOf("SPRING");
????????System.out.println(spring);
????????System.out.println("===========================");

????????System.out.println("========toString方法========");
????????System.out.println(spring.toString());
????????System.out.println("===========================");

????????System.out.println("========name方法========");
????????System.out.println(spring.name());
????????System.out.println("===========================");

????????System.out.println("========ordinal方法========");
????????System.out.println(spring.ordinal());
????????System.out.println("===========================");

????????System.out.println("========compareTo方法========");
????????System.out.println(spring.compareTo(Season.WINTER));
????????System.out.println("===========================");
????}
}

2.枚舉類對(duì)接口的實(shí)現(xiàn)方式

準(zhǔn)備工作

新建一個(gè)EnumInf?接口,定義一個(gè)抽象方法

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?17:25
?*/
public?interface?EnumInf?{
????void?show();
}

1.實(shí)現(xiàn)接口,在enum中統(tǒng)一實(shí)現(xiàn)抽象方法

新建一個(gè)EnumInf?接口,定義抽象方法?show()

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?17:25
?*/
public?interface?EnumInf?{
????void?show();
}


新建一個(gè)OrderStatus?枚舉類 實(shí)現(xiàn)?EnumInf?接口

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?17:27
?*/
public?enum?OrderStatus?implements?EnumInf{

????SUCCESS(200,"交易成功"),
????Fail(500,"交易失敗");

????private?final?int?code;
????private?final?String?desc;

????OrderStatus(int?code,?String?desc){
????????this.code?=?code;
????????this.desc?=?desc;
????}

????public?int?getCode()?{
????????return?code;
????}
????public?String?getDesc()?{
????????return?desc;
????}

????/**
?????*?第一種方式,枚舉統(tǒng)一重寫接口抽象方法
?????*/
????@Override
????public?void?show()?{
????????System.out.println("訂單枚舉對(duì)象");
????}
}

進(jìn)行測試

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?17:32
?*/
public?class?OrderStatusTest?{
????public?static?void?main(String[]?args)?{
????????OrderStatus?success?=?OrderStatus.SUCCESS;
????????success.show();
????}
}


輸出結(jié)果

訂單枚舉對(duì)象

Process?finished?with?exit?code?0

跟我們常用類實(shí)現(xiàn)沒有什么區(qū)別,枚舉也是可以統(tǒng)一實(shí)現(xiàn)的,那如果想針對(duì)不同的枚舉對(duì)象進(jìn)行不同狀態(tài)的實(shí)現(xiàn)怎么辦呢?比如我們的OA系統(tǒng)、或者電商系統(tǒng)中,根據(jù)不同狀態(tài) 我們需要回寫對(duì)應(yīng)的數(shù)據(jù),下面我們就來看看如何實(shí)現(xiàn)。

2.枚舉對(duì)象分別實(shí)現(xiàn)接口中的抽象方法

案例跟接口統(tǒng)一實(shí)現(xiàn)一致,我們這邊修改一下OrderStatus?枚舉類,代碼如下

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?17:27
?*/
public?enum?OrderStatus?implements?EnumInf{

????SUCCESS(200,"交易成功")?{
????????@Override
????????public?void?show()?{
????????????System.out.println("回寫交易成功狀態(tài)");
????????}
????},
????Fail(500,"交易失敗")?{
????????@Override
????????public?void?show()?{
????????????System.out.println("回寫交易失敗狀態(tài)");
????????}
????};

????private?final?int?code;
????private?final?String?desc;

????OrderStatus(int?code,?String?desc){
????????this.code?=?code;
????????this.desc?=?desc;
????}

????public?int?getCode()?{
????????return?code;
????}
????public?String?getDesc()?{
????????return?desc;
????}

}

我們再修改下測試類代碼:

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?17:32
?*/
public?class?OrderStatusTest?{
????public?static?void?main(String[]?args)?{
????????OrderStatus?success?=?OrderStatus.SUCCESS;
????????success.show();
????????OrderStatus?fail?=?OrderStatus.Fail;
????????fail.show();
????}
}

輸出結(jié)果

回寫交易成功狀態(tài)
回寫交易失敗狀態(tài)

Process?finished?with?exit?code?0

通過這種方式就可以輕而易舉地定義每個(gè)枚舉實(shí)例不同的行為方式,也達(dá)到了我們預(yù)期的效果,其實(shí)在開發(fā)過程中根據(jù)枚舉的設(shè)計(jì)和設(shè)計(jì)模式的鋪墊可以極大的簡化我們的業(yè)務(wù)代碼。

3.Enum枚舉類的工具類及應(yīng)用場景

1.EnumSet 和 EnumMap

Java 中提供了兩個(gè)方便操作enum的工具類——EnumSet 和 EnumMap。

EnumSet?是枚舉類型的高性能?Set?實(shí)現(xiàn)。它要求放入它的枚舉常量必須屬于同一枚舉類型。

//?EnumSet的使用
System.out.println("EnumSet展示");
EnumSet?errSet?=?EnumSet.allOf(OrderStatus.class);
for?(OrderStatus?e?:?errSet)?{
????System.out.println(e.name()?+?"?:?"?+?e.ordinal());
}

EnumMap?是專門為枚舉類型量身定做的?Map?實(shí)現(xiàn)。雖然使用其它的 Map 實(shí)現(xiàn)(如HashMap)也能完成枚舉類型實(shí)例到值得映射,但是使用 EnumMap 會(huì)更加高效:它只能接收同一枚舉類型的實(shí)例作為鍵值,并且由于枚舉類型實(shí)例的數(shù)量相對(duì)固定并且有限,所以 EnumMap 使用數(shù)組來存放與枚舉類型對(duì)應(yīng)的值。(計(jì)算機(jī)處理連續(xù)的資源使用局部內(nèi)存效率更高)這使得 EnumMap 的效率非常高。

//?EnumMap的使用
System.out.println("EnumMap展示");
EnumMap?errMap?=?new?EnumMap(StateMachine.Signal.class);
errMap.put(StateMachine.Signal.RED,?"紅燈");
errMap.put(StateMachine.Signal.YELLOW,?"黃燈");
errMap.put(StateMachine.Signal.GREEN,?"綠燈");
for?(Iterator>?iter?=errMap.entrySet().iterator();?iter.hasNext();)?{
????Map.Entry?entry?=?iter.next();
????System.out.println(entry.getKey().name()?+?"?:?"?+?entry.getValue());
}

2.枚舉類與 Switch 的配合使用

關(guān)于枚舉與switch是個(gè)比較簡單的話題,使用switch進(jìn)行條件判斷時(shí),條件參數(shù)一般只能是整型,字符型。而枚舉型確實(shí)也被switch所支持,在java 1.7后switch也對(duì)字符串進(jìn)行了支持。

實(shí)踐

新建一個(gè)?BizEnum?的java class,代碼如下

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description?企業(yè)類型枚舉
?*?@create?2020-09-13?21:24
?*/
public?enum?BizEnum?{

????COUNTRIES(101,"國有企業(yè)"),

????PRIVETE(102,"私營企業(yè)"),

????SOHO(103,"個(gè)體單位");

????private?final?int?code;
????private?final?String?desc;

????BizEnum(int?code,?String?desc){
????????this.code?=?code;
????????this.desc?=?desc;
????}

????public?int?getCode()?{
????????return?code;
????}
????public?String?getDesc()?{
????????return?desc;
????}

????//根據(jù)編碼獲取當(dāng)前枚舉對(duì)象的方法
????public?static?BizEnum?getBizTypeByCode(int?code){
????????for?(BizEnum?bizEnum?:?BizEnum.values())?{
????????????if(code?==?bizEnum.getCode()){
????????????????return?bizEnum;
????????????}
????????}
????????return?null;
????}
}

結(jié)合Switch進(jìn)行測試

package?org.taoguoguo;

/**
?*?@author?taoGG
?*?@description
?*?@create?2020-09-13?21:31
?*/
public?class?BizTest?{
????public?static?void?main(String[]?args)?{
????????BizEnum?bizType?=?BizEnum.getBizTypeByCode(101);
????????switch?(bizType){
????????????case?COUNTRIES:
????????????????System.out.println("國有企業(yè)");
????????????????break;
????????????case?PRIVETE:
????????????????System.out.println("私營企業(yè)");
????????????????break;
????????????case?SOHO:
????????????????System.out.println("個(gè)體單位");
????????????????break;
????????????default:
????????????????System.out.println("創(chuàng)業(yè)中");
????????}
????}
}

輸出結(jié)果:

國有企業(yè)

Process?finished?with?exit?code?0

總結(jié)

  1. jdk 5.0之前我們可以自定義枚舉類,jdk 5.0之后使用enum關(guān)鍵字定義枚舉類,枚舉類默認(rèn)繼承自java.lang.Enum,使用枚舉類將常量組織起來,便于統(tǒng)一管理。例如錯(cuò)誤碼、狀態(tài)機(jī)等場景中,較為合適使用枚舉類。

  2. 枚舉類常用方法介紹及枚舉類實(shí)現(xiàn)抽象類、接口等抽象方法的兩種方式。

  3. 枚舉常用的工具類及與switch使用的場景。




粉絲福利:108本java從入門到大神精選電子書領(lǐng)取

???

?長按上方鋒哥微信二維碼?2 秒
備注「1234」即可獲取資料以及
可以進(jìn)入java1234官方微信群



感謝點(diǎn)贊支持下哈?

瀏覽 85
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)
評(píng)論
圖片
表情
推薦
點(diǎn)贊
評(píng)論
收藏
分享

手機(jī)掃一掃分享

分享
舉報(bào)

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 午夜成人小电影| 大香蕉av一区二区三区在线观看| 大香蕉网伊人| 色秘乱码一区二区三区唱戏| 一本道综合网| 日韩欧美在线一区| 亚洲一区图片| 西西www444无码大胆| 国产无码AV| 五月天婷婷在线观看| 蜜臀久久| 91在线无码精品秘国产-百度| 日本黄色视频网| 黄色AV电影| 国产一级二级三级视频| 99电影网手机在线观看| 91在线看| 九九色视频| 日老女人逼| 精品视频无码| 国产女人18毛片水18精品| 狠狠色噜噜狠狠狠888米奇视频| 国产又粗又长又硬又大毛苴茸图片| 看毛片视频| 99热| 日日天天| 91精品综合| 青青草超碰在线| 久久久久久97| 久久熟女嫩草成人片免费| 青青草小视频| 视频一区中文字幕| 欧美一级特黄真人做受| 日皮视频在线观看免费| 日皮视频网站| 亚洲精品国产成人无码区在线| 中文字幕高清AⅤ| www.啪啪| 丰滿老婦BBwBBwBBw| av免费在线播放| 亚洲免费中文字幕| 日韩无码黄片| 国产乱妇乱子伦视频免费观看让女人 | 国产粉嫩小泬白浆18p| 欧美日韩视频| 午夜嘿嘿| h片在线播放| 99在线免费观看| 91偷拍视频| 91av成人| 午夜操逼视频| 韩国精品一区二区| 成人午夜无码福利视频| 丝袜美腿亚洲综合| 91麻豆影院| 成人看片黄a免费看视频| 白嫩外女BBwBBwBBw| 四虎成人免费视频| 国产区欧美去区在线| 日本中文字幕网站| 人人妻人人澡人人爽人人爽| 成人小说视频| 欧美极品另类| а中文在线天堂精品| 91精品久| 精品国内自产拍在线观看视频| 日本黄色影院在线| 亚洲成人网站免费观看| 国产小黄片在线| 伊人成人免费视频| 黄色香蕉视频| 亚洲第一成人网址| 一插菊花网| 学生妹一级片内射视频| 波多野59部无码喷潮| 中文字幕第23页| 影音先锋男人网| 尤物视频在线观看视频| 亚洲中文字幕日韩| 在线视频污| 激情久久AV一区AV二区AV三区| 国产操骚逼| 高清无码在线免费观看视频| 夜色视频网| 国产精品高清无码| 四虎影院在线| 日本A片免费观看| www.俺去了| 久草久久| 久操无码| 中文无码日本一级A片久久影视| 亚洲视频免费完整版在线播放| 黄色小网站在线观看| 国产精品黄色电影| 一本色道久久综合亚洲精品久久| 青春草在线| 在线观看国产免费视频| 免费无码在线观看| 人人色人人摸| 搡BBB搡BBBB搡BBBB| 在线不卡免费Av| 中文AV第一页| 91久久久精品| 99热在线中文字幕| 亚洲av大片| 波多野吉衣中文字幕| 在线观看av资源| 久久精品苍井空免费一区| AⅤ在线观看| 欧美日韩国产性爱| 亚洲国产精品成人综合| 91在线免费视频观看| 一道本av| 精品自拍视频| 123操逼| 黄色视频| 日本欧美中文| 七区九区一区在线| 五月丁香综合在线| 人妻av中文无码| 亚洲成年视频| 少妇白洁视频| 亚洲免费视频播放| 无码人妻一区二区一牛影视| AV在线天堂| 亚洲小说图片AV在线| 中文字幕黑人无码| 北条麻妃无码av| 麻豆www| 日本国产欧美| 五月婷婷色色色| 中文字幕亚洲高清| 大鸡巴操骚逼视频| 无码免费在线视频| 日韩免费AV| VA电影| 国产综合色网| 国产一级二级片| 青青色视频| 国产精品揄拍500视频| 手机看片1204| 免费a片在线观看| 国产久久视频| 日韩欧美日本| 国产91在线拍揄自揄拍无码九色| 日韩欧美视频在线播放| 亚洲男人天堂AV| 免费久久久| 黄色片在线免费看| www.黄色| 开心色播五月| 中文字幕+乱码+中文乱码91在线观看| 国产不卡在线视频| 豆花视频成人版www满18| 婷婷AV在线| 日本一级a片| 在线免费看AV片| 蜜桃传媒AV| 在线观看AV网站| 日韩无码视频网站| 91网站免费看| 蜜桃免费视频| 欧美乱轮| 免费高清无码视频在线观看| 少妇探花| 青青青草视频在线观看| www.51av| 欧美成人在线视频| 亚洲中文字幕无码在线观看| 麻豆AV片| 中文在线a∨在线| 高清无码一区二区三区四区| 日本高清无码| 久久澡| 欧美成a| 无码一区二区久久| 一本色道久久88加勒比| 欧美性爱在线观看| 亚洲wwwwww| 亚洲天堂一区在线观看| 人妻天天操| 国产成人综合网| AV在线天堂| 久久久久久亚洲精品| 日韩高清无码免费观看| 上床视频网站| 日本操逼电影| 北条麻妃无码| 欧美色图亚洲另类| 国产成人午夜高潮毛片| 精品一区二区ww| 日韩成人视频在线观看| 啪视频网站国产馆| 人妻毛片| 久久XXX| 先锋影音av在线| 欧美日本成人网站入口| 欧美系列在线| av东方在线| 成人亚洲AV日韩AV无码| 日本精品一区二区| 蜜桃无码一区| 久久婷婷五月综合伊人| 91av在线免费观看| 蜜桃传媒一区二区| 久久日精品| 一本到免费视频| 国产黄色视频免费| 天天做| 97精品人妻一区| 精品亚洲一区二区三区四区五区 | 凹凸熟女凹凸BBWBBW| 国产99精品视频| 91肏屄视频| 午夜黄色福利| 国产18欠欠欠一区二区| 成人毛片一区二区三区无码| 深爱激情网五月天| 国产福利91精品一区二区三区 | 尤物在线视频| 欧美+日产+中文| 日韩在线视频免费播放| 学生妹一级J人片内射视频| 精品久久久久久AV2025| 亚洲欧洲日本在线| 亚洲午夜在线观看| 丁香五月激情婷婷| 日韩精品人妻| 日韩高清无码网站| 苍井空无码| 蝌蚪窝视频网| A级片免费| 久久性爱网| 免费中文字幕视频| 特写毛茸茸BBwBBwBBw| 五月深爱| 伊人久久综合| 超碰人人爱人人操| 91ThePorn国产在线观看| 天堂一区二区| www九九| 日韩无码内射| 香蕉综合网| 调教人妻视频| 日韩无码精品一区二区三区| 久久一道本| 欧美视频手机在线| 精品国产A片| 国产精品国产精品国产专区不片 | 97超碰人人操| 亚洲成人在线视频观看| 99精品视频16在线免费观看| 黑人无码在线| 中文无码日本高潮喷水| 久操av在线| 天天日天天干天天日| 小黃片秘嗯嗯啊| 中文一区在线| 蜜桃av秘无码一区二区| 一本免费视频| 成人电影久久久| 露脸丨91丨九色露脸| 午夜无码久久| 欧美成人超碰| 91精东传媒果冻传媒| 乱伦播放五月天| 亚洲狼人天堂| 中文字幕高清| 欧美亚洲国产视频| 操逼影视| 欧美日韩高清一区| 成人AV中文字幕| 欧美老妇另类老屁XXX| 日本天堂网站| 天天日天天撸| 伊人色女操穴综合网| 日本熟妇无码一区二区| 午夜高清| 安徽妇搡BBBB搡BBBB,另类老妇| 天堂婷婷| 豆花成人社区,视频| 天天澡日日久| jjzz国产| 视色视频在线观看| 成人网站www污污污网站公司| 水果派解说在线观看| 探花熟女| 青草草在线| 人人操在线公开| 亚洲高清视频免费| 日本精品视频在线观看| 91AV在线观看视频| 奇米色五月| 最新免费毛片| 麻豆一区在线观看| 欧美性爱在线观看| 欧美日屄视频| 国产人妖在线观看| 69激情网| 麻豆视频国产| 色五月婷婷丁香五月| 处破女初破全过免费看| 一区二区三区久久久| 免费尻屄视频| 蜜桃av秘无码一区二区| 大香蕉网站视频| 2025天天干| 日韩中文字幕无码人妻| 国产精品不卡在线观看| 99电影网手机在线观看| 欧美一级A片在线观看| 逼特逼在线观看| 蜜桃影院| 日韩免费A片| 神马午夜激情| 91人人妻人人澡人人爽人人| 亚洲免费在线看| 69AV视频在线观看| 特黄AAAAAAAA片视频| 爱爱爱爱视频| 超碰人人操| 天堂aaa| 99精品久久| 69自拍视频| 高清无码免费观看| 欧美午夜电影| 最好看的MV中文字幕国语| 日韩无码波多野结衣| 中文乱伦视频| 成人影片亚洲| 亚洲AV无码成人| 色av网| 91福利视频网站| 阿拉伯三级片| 九色PORN视频成人蝌蚪自拍| 黑人又粗又大XXXXOO| 亚洲国产成人91精品| gay成人在线观看| 亚洲精品午夜| 女人的天堂AV在线观看| 久久久久麻豆V国产精华液好用吗| h片在线免费观看| 日韩亚洲在线观看| 91视频在线免费观看| 色色色热| 91中文字幕| 青青草无码在线| 日本一级做a爱片| 亚洲免费视频网| 国产中文字幕亚洲综合欧美| 欧美在线色| 操逼三级视频| 俺也去五月婷婷| 久久久久国产一区二区三区四区| 69xx视频| 亚洲成人怡红院| 69色综合| 国产人妻精品一区二区三区不卡 | 亚洲精品成人网站| 国产一区不卡| 制服丝袜在线视频| 亚洲色图在线观看| 色视频在线播放| 色色网欧美| 九九色网| 嫩BBB槡BBBB槡BBB小号| 亚洲国产免费| 色婷婷在线视频播放| 日韩精品久久久久久久| 污视频网站免费观看| 亚洲人妻AV| 欧美成人一级片| 国产精品电影大全| 日韩中文字幕无码中字字幕| 欧美久久国产精品| 夜夜撸网站| 无码毛片在线观看| 日逼综合网| 伊人成人免费视频| 伊人在线观看视频| 西西特级WWW444无码| 麻豆91免费视频| 毛片18| 男女做爱无码| 日韩无码一二三| 91看片看婬黄大片Videos | 久久影音先锋| 日韩中文字幕在线人成网站| 成人片天天看片欧美一级| 黄色国产免费| 成人午夜小电影| 国产XXXXX| 欧美亚洲精品在线| 欧美在线播放| 日本少妇做爱| a视频在线免费观看| 亚洲免费天堂| 翔田千里无码| 亚欧三级| 爱爱电影无码| 无码久久久| 3p视频网站| 亚洲天堂在线播放| 日本一区二区三区免费观看| 青青草社区视频| 亚洲天堂无码视频| 精品码产区一区二亚洲国产| 99热精品免费在线观看| 国产成人a亚洲精品无码| 国产成人三级在线播放| 婷婷五月天电影| 91丨九色丨国产在线| 国产人妻人伦精品一区| 五月婷婷六月天| 免费看黄色毛片| 人妻人人操| 成人v| 日韩bbbb| 日韩欧美在线视频观看| 日日摸夜夜| 东京热六区| 国产成人av在线| 伊人黄色视频| 欧美级毛片高潮| 国产精品国产精品国产专区不| henhengan| 日韩一区二区三区在线观看| 黄色av免费观看| 亚洲内射无码| 91午夜福利| 国产女人18水真多18精品一级做| 无码人妻丰满熟妇啪啪| JUY-579被丈夫的上司侵犯后的第7天,我 | 日韩在线看片| 豆花无码视频一区二区| 欧美日韩性| 欧美亚洲国产日韩| 豆花成人在线| 大香蕉在线精品视频| 麻豆成人精品| 亚洲人操逼| 婷婷视频在线| 六月婷婷网| 久久精品视频在线免费观看| 东方av在线观看| 91人妻人人澡人人爽精品| 99久久久久久久无码| 人妻免费视频| 麻豆黄色| 色婷婷激情在线| 中文字幕在线观看免费视频| 久草精品视频| 亚洲人成免费网站| 成人水蜜桃| 日本翔田千里奶水| 亚洲午夜激情| 黄色日本视频| www四虎| 黄色不卡视频| 色久综合| 久久久WWW成人免费精品| 日韩中文字幕视频| 能看的AV网站| 人成在线观看| 青操av| 特级毛片www| 大学生一级特黄大片| 日韩不卡高清在线观看视频| 中文字幕视频在线| 狠狠躁18三区二区一区免费人| 久久久久亚洲AV无码成人片 | 西西444WWW无码视频软件| 久久久国产精品黄毛片| 无码伊人| 草草影院第一页YYCCC| 国产欧美一区二区人妻喷水| 日韩人妻在线观看| 99久久影院| 综合天堂| 欧美一级a| 视色av| 日产精品久久久一区二区| av黄色网| 国产九色91回来了| 少妇熟女一区| 成功精品影院| 国产高清精品在线| 国产无码免费| 五月丁香婷婷色| 欧美成人中文字幕| 青娱乐国产| 日韩中文字幕人妻| 亚洲高清超级无码在线视频观看 | 欧美老妇XX| 日本中文字幕在线观看| 黄色小视频免费观看| 中文字幕无码成人| 人人妻人人澡人人DⅤD| 亚洲无码免费视频| 亚洲欧美在线观看视频| 操逼中文字幕| 婷婷亚洲国产| 青青草人人| 激情操逼| 久久婷婷六月综合| 学生妹内射| 在线免费黄色网址| 99re在线| 亚洲天堂无码在线观看| 久久午夜一级A片| 91嫖妓站街按店老熟女| 国产骚逼视频| 亚洲AV无码国产精品| 无码在线电影| www.97色| 日本免费在线黄色视频| 国产日本在线视频| 亚洲av免费| 在线黄色小视频| 青青在线免费视频| 久久免费视频网站| 日本一级理论片在线大全| 欧美色图网站| 欧美夜夜爽| 一级A色情大片| 豆花视频在线免费观看| www.av免费| 天天做| 人人干人人摸人人操| 欧美日韩一二| 一级免费黄色视频| 99免费视频在线| 国产成人片色情AAAA片| 青青av| 成人午夜激情| 午夜乱论| 操美女视频网站| 99热在线观看者| 996久久| a片免费在线观看| 日日夜夜天天| 99xxxxx| 久久er99| 国产av网| 白峰美羽人妻AND-499| 国产精品秘久久久久久网站| 成人做爰A片AAA毛真人| 色色影院| 日韩无码影视| 东京热A片| 九九射| 精品人妻系列| 一区二区三区四区五区六区高清无吗视频 | 91无码精品国产| 精品国产三级片| 久久天堂AV综合合色蜜桃网| 91久久久久久久久久| 午夜AV免费| 国产精品天天AVJ精麻传媒| 免费看黄色大片| 69式荫蒂被添全过程频| 伊人九九热| 亚洲一区二区在线播放| 日本精品视频一区二区| 久久精品99国产国产精| 国产精品色婷婷99久久精品| 国产操逼网| 免费无码视频在线观看| 国产成人无码永久免费| 2025精品视频| av在线资源播放| 人人操人人爽人人妻| 国产一区二区三区四区五区六区七区| 日本一区二区网站| 殴殴美日韩在线| 欧美亚洲视频| 亚洲视频综合| 中文字幕人妻互换av久久| 人人爱人人爽| 成人激情免费视频| 激情国产AV| av天堂资源| 国产SUV精品一区二区| 在线观看国产欧美| 怡红影院美乳| 五月婷婷在线观看| 特黄毛片| 男女操网站| 色情电影网站| 69久久久| 亚洲熟女av中文字幕| 亚洲日韩欧美一厂二区入| 99国产一区| 午夜久久福利| 3D精品啪啪一区二区三区| 亚洲AV无码一区毛片AV| 天天操嫩逼无套视频| 一区二区三区欧美| 久久久久成人电影| 久久精品视频在线| 加勒比无码高清| 婷婷五月天成人电影| 亚洲国产天堂| 亚洲熟妇视频| a欧美| 国产精彩无码视频| 午夜久久视频| 暖暖av| 中文字幕国产在线观看| 国产主播AV| 先锋av资源在线| 欧美性爱免费在线视频| 亚洲北条麻妃一级A片| 91无码视频在线观看| 激情一一区二区三区| 女人操逼视频| 97一区二区| 口爆在线| 东方成人AV| 亚洲一级黄| 亚洲精品乱码| 亚洲av资源| 久久久久久AV| 九色在线观看| 无码一区三区| 老鸭窝在线观看视频| 2025天天干| 成人免费看片| 麻豆视频一区| 成人AV影院| 日本内射在线观看| 国产福利91| 一区二区三区四区在线播放| 97人妻精品一区二区三区图片| 亚洲区中文字幕| 春色AV| 亚洲精品免费在线观看| 日韩性爱小说| 日韩一级片免费| 少妇搡BBBB搡BBB搡造水多/| 五月激情六月| 国产亚洲色婷婷久久99精品| 五月天久久久久| 91超碰在线播放| 免费成人一级片| 欧美国产乱伦| 久久久精品欧美| 无码精品成人观看A片| 亚洲第九页| 中文字幕精品在线视频| 国产精品欧美一区二区| 天堂va欧美va亚洲va在线| 91蜜桃在线观看| 99er在线视频| 国产精品视频免费在线观看| 午夜天堂网| 天天射网| 黄片在线免费观看视频| 狠狠操狠狠撸| 自拍偷拍中文字幕| 色婷婷AV国产精品| 91香蕉国产| 97国产在线视频| 狠狠撸视频| 欧美视频免费| 欧美999| 日韩成人精品| 男女操逼免费观看| 搡BBBB搡BBB搡五十粉嫩| 人人干人人操人人爱| 日韩精品成人AV| 人人爱人人操人人爽| 婷婷五月激情小说| 操逼网123首页| 亚洲日逼网站| 欧美黄片一区二区| 成人免费看A片| 一级二级三级视频| 欧美人人| 色秘乱码一区二区三区唱戏| 亚洲视频中文字幕在线观看| 久久人人爱| 污视频免费在线观看| 操逼网站免费| 天天干天天干天天| 韩国高清无码60.70.80| 奇米超碰| 爱爱视频无码| 日韩av在线看| 91国内产香蕉| 污网站18禁| 69成人视频| 免费在线观看黄视频| 国产成人精品免高潮在线人与禽一| 中文在线永久免费观看| 日韩五码| 中文字幕h| 91青青草| 全部免费黄色视频| 玖玖中文字幕| 欧美最猛黑A片黑人猛交蜜桃视频 色噜噜狠狠一区二区三区300部 | 欧美成人网站在线观看| 国产成人电影| 好吊一区二区| 91嫩草久久久久久久| 四虎成人精品永久免费AV九九| 亚洲AV人人夜夜澡人人| 欧美啊啊啊| 这里只有精品在线观看| 91日日夜夜| 狠狠撸在线视频| 国产群交| 国产P片内射天涯海角| 欧美日韩中字| 日本天堂网在线观看| 人成在线视频| H片免费在线观看| 欧美在线视频播放| 日韩高清无码不卡| 日韩在线视频播放| 亚洲色婷婷| 黄色带亚州| 久久性爱免费视频| 欧美日韩网| 亚洲一区二区在线播放| 91农村站街老熟女露脸| 久久国产精品久久| 精品免费国产一区二区三区四区的使用方法| 久草视频在线播放| 欧美在线观看视频一区| 亚洲Av无码午夜国产精品色软件| www444www| 国产色情视频在线观看| 老熟女一区二区三区| 水蜜桃网址| 麻豆传媒在线观看| 3d动漫一区二区| 亚洲区在线播放| 亚洲伊人大香蕉| 国产精品大全| 亚洲精品婷婷| 大香蕉网址| 色色色成人视频| 操B视频在线播放| 国产乱伦内射视频| 香蕉AV777XXX色综合一区| 一卡二卡无码| 果冻传媒A片一二三区| 无码日韩AV| 国产一级乱伦| 精品黄色视频| 国产三级三级三级| 无码福利电影| 影音先锋成人电影| 国产精品特级毛片| 清清草在线视频| 亚洲黄色电影网| 无码国产视频| 操日本老女人| 亚洲无码中文人妻| 日韩AV成人无码久久电影| 69国产精品视频免费观看| 豆花在线视频| 国产人人看| 日韩在线观看| 国产精品欧美性爱| 五月丁香欧美综合| 亚洲成人无码av| 日本一区二区三区在线视频| 无码高清在线观看| 一区在线看| 99久久婷婷国产综合| 日本A在线观看| 99色热| 18禁黄网站| 欧美色图亚洲另类| xxxxxbbbbb| aaa午夜| 高清无码视频免费观看| 日本成人午夜福利| 亚洲欧美日韩在线| 人人做人人做人人做,人人做全句下一| 免费无码AV| 91免费在线| 日韩无码不卡电影| 青青草原在线视频免费观看| 亚洲国产熟妇无码日韩| 成人片网址| 五月天毛片| 成人欧美一区二区三区在线观看| 中文在线观看免费视频| 五十路无码| 黄色一级视频| 成人免费高清| 大香蕉伊人综合网| 九九乱伦| 亚洲成人中文字幕| 日韩久操| 黄色片网站免费观看| 97在线观看免费| www.尤物| 99热网址| 婷婷俺也去| 九九成人视频| 欧美洲成人网站| 日本中文字幕在线免费观看| jzzijzzij亚洲成熟少妇在线播放| 老熟女露脸25分钟91秒| 色94色.欧美.setu| 日韩无码A| 99无码人妻| 韩日在线| av大片在线观看| 天天天天日天天干| 97人妻在线视频| 国产激情综合五月久久| 爽爽午国产浪潮AV性色www| 久久久久99精品成人片三人毛片| 精品欧美一区二区精品久久| 日韩三级| 黄色视频网站观看| 成人综合网站| 亚洲成人高清无码| 天天综合字幕一区二区| 日本黄色视频在线免费观看| 无码av免费精品一区二区三区| 国产三级黄色视频| 色婷婷中文在线| 国产操逼的视频| 九九热精品视频在线播放| 国产精品可站18| 精品777| 国产熟妇婬乱A片免费看牛牛| www.尤物| 国产黄色Av| 黑人狂躁女人高潮视频| 北条麻妃视频在线| 精品少妇无码视频| 欧美午夜精品久久久久久3D| 91天堂| 人妻av一区二区三区| 开心激情婷婷| BBW老熟女BBw| 精产国品一区二区| 欧美日韩色情| 久久艹视频| 国产在线在线| 翔田千里中文字幕无码| 国产亚洲激情| 大秀91视频| 一区二区三区无码精品| av一区二区三区四区| 无码视频免费观看| 亚洲午夜激情电影| 国产娇小13videos糟蹋| 91视频网站| 亚洲高清无码视频在线播放| 五月天激情综合网| 伊人激情| 亚洲成年人在线| 精品国产一区二区三区久久久蜜月 | 日本毛片在线观看| 欲色AV| 色色色色AV| 国精产品久拍自产在线网站| 亚洲aaa| 91人人妻人人澡人人爽人人精品| 污视频在线看| 伊人色女操穴综合网| 欧美精品不卡| 躁BBB躁BBB添BBBBBB| 国产精品久久久一区二区三区| 无码爆操| 免费精品99| 超碰日| 成年人黄色视频在线观看| 少妇大战黑人46厘米| 熟女人妻人妻の视频| 91人妻人人澡人人澡人人精品| 国产色婷婷| 日韩无码精品一区| www.91在线| 亚洲精品97久久| 国产黄色视频免费看| 強姧伦一区二区三区在线播放| 亚洲中文视频在线| 91小视频在线| 欧美操| 欧洲综合视频| 五月丁香大香蕉| 999国产精品视频| 丁香五月婷婷久久| 欧美激情一区| 国产精品宾馆| 午夜无码精品一区二区三区99午| 人人摸人人操人人摸| 怡红院成人av| 日韩无码国产精品| 人妻综合第一页| av片在线免费观看|