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

關于Java泛型這些事

開發 后端
泛型(generics)是 JDK 5 中引入的一個新特性, 泛型提供了編譯時類型安全檢測機制,該機制允許程序員在編譯時檢測到非法的類型。

[[443125]]

關于泛型,有一道經典的考題:

  1. public static void main(String[] args) { 
  2.         List<String> list1= new ArrayList<String>(); 
  3.         List<Integer> list2= new ArrayList<Integer>(); 
  4.         System.out.println(list1.getClass() == list2.getClass()); 
  5.     } 

請問上面代碼的輸出結果是什么?

如果是了解泛型的同學會很容易答出:true,如果是不了解泛型的同學則很可能會答錯。今天就和大家一起來重溫一下Java泛型相關的知識。

一、什么是泛型?

泛型(generics)是 JDK 5 中引入的一個新特性, 泛型提供了編譯時類型安全檢測機制,該機制允許程序員在編譯時檢測到非法的類型。泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。具有以下特點:

  • 與普通的 Object 代替一切類型這樣簡單粗暴而言,泛型使得數據的類別可以像參數一樣由外部傳遞進來。它提供了一種擴展能力。它更符合面向抽象開發的軟件編程宗旨。
  • 當具體的類型確定后,泛型又提供了一種類型檢測的機制,只有相匹配的數據才能正常的賦值,否則編譯器就不通過。所以說,它是一種類型安全檢測機制,一定程度上提高了軟件的安全性防止出現低級的失誤。
  • 泛型提高了程序代碼的可讀性,不必要等到運行的時候才去強制轉換,在定義或者實例化階段,因為 Cache這個類型顯化的效果,程序員能夠一目了然猜測出代碼要操作的數據類型。

泛型按照使用情況可以分為3種:泛型類、泛型方法、泛型接口。

1.泛型類

我們可以定義如下一個泛型類

  1. /** 
  2.  * @author machongjia 
  3.  * @date 2021/12/28 20:02 
  4.  * @description 
  5.  */ 
  6. public class Generic<T> { 
  7.  
  8.     private T var; 
  9.  
  10.     public Generic(T var) { 
  11.         this.var = var; 
  12.     } 
  13.  
  14.     public T getVar() { 
  15.         return var; 
  16.     } 
  17.  
  18.     public static void main(String[] args) { 
  19.         Generic<Integer> i = new Generic<Integer>(1000); 
  20.         Generic<String> s = new Generic<String>("hello"); 
  21.         System.out.println(i.getVar()); 
  22.         System.out.println(s.getVar()); 
  23.     } 

輸出結果:

  1. 1000 
  2. hello 

常用的類似于T這樣的類型參數包括:

T:代表一般的任何類

E:代表 Element 的意思,或者 Exception 異常的意思

K:代表 Key 的意思。

V:代表 Value 的意思,通常與 K 一起配合使用

S:代表 Subtype 的意思

泛型類可以不止接受一個參數T,還可以接受多個參數,類似于下面這種:

  1. public class Generic<E,T> { 
  2.  
  3.     private E var1; 
  4.     private T var2; 
  5.  
  6.     public Generic(E var1, T var2) { 
  7.         this.var1 = var1; 
  8.         this.var2 = var2; 
  9.     } 
  10.  
  11.     public static void main(String[] args) { 
  12.         Generic<Integer,String> generic = new Generic<Integer,String>(1000,"hello"); 
  13.         System.out.println(generic.var1); 
  14.         System.out.println(generic.var2); 
  15.     } 

2.泛型方法

  1. public class Generic { 
  2.  
  3.     public <T> void testMethod(T t){ 
  4.  
  5.     } 
  6.  

泛型方法與泛型類稍有不同的地方是,類型參數也就是尖括號那一部分是寫在返回值前面的。中的 T 被稱為類型參數,而方法中的 T 被稱為參數化類型,它不是運行時真正的參數。

當然,聲明的類型參數,其實也是可以當作返回值的類型的。

泛型類與泛型方法共存的情況:

  1. public class Generic<T> { 
  2.  
  3.     public void testMethod(T t){ 
  4.         System.out.println(t.getClass().getName()); 
  5.     } 
  6.  
  7.     public <T> T testMethod1(T t){ 
  8.         return t; 
  9.     } 

上面代碼中,Test1是泛型類,testMethod 是泛型類中的普通方法,而 testMethod1 是一個泛型方法。而泛型類中的類型參數與泛型方法中的類型參數是沒有相應的聯系的,泛型方法始終以自己定義的類型參數為準。

3.泛型接口

泛型接口與泛型類的定義及使用基本相同。泛型接口常被用在各種類的生產器中,可以看一個例子:

  1. //定義一個泛型接口 
  2. public interface Generator<T> { 
  3.     public T next(); 

當實現泛型接口的類,未傳入泛型實參時:

  1. /** 
  2.  * 未傳入泛型實參時,與泛型類的定義相同,在聲明類的時候,需將泛型的聲明也一起加到類中 
  3.  * 即:class FruitGenerator<T> implements Generator<T>{ 
  4.  * 如果不聲明泛型,如:class FruitGenerator implements Generator<T>,編譯器會報錯:"Unknown class" 
  5.  */ 
  6. class FruitGenerator<T> implements Generator<T>{ 
  7.     @Override 
  8.     public T next() { 
  9.         return null
  10.     } 

當實現泛型接口的類,傳入泛型實參時:

  1. /** 
  2.  * 傳入泛型實參時,定義一個生產器實現這個接口,雖然我們只創建了一個泛型接口Generator<T> 
  3.  * 但是我們可以為T傳入無數個實參,形成無數種類型的Generator接口。 
  4.  * 在實現類實現泛型接口時,如已將泛型類型傳入實參類型,則所有使用泛型的地方都要替換成傳入的實參類型 
  5.  * 即:Generator<T>,public T next();中的的T都要替換成傳入的String類型。 
  6.  */ 
  7. public class FruitGenerator implements Generator<String> { 
  8.  
  9.     private String[] fruits = new String[]{"Apple""Banana""Pear"}; 
  10.  
  11.     @Override 
  12.     public String next() { 
  13.         Random rand = new Random(); 
  14.         return fruits[rand.nextInt(3)]; 
  15.     } 

4.通配符?

通配符的出現是為了指定泛型中的類型范圍,包含以下3 種形式。

  • <?>被稱作無限定的通配符。
  • <? extends T>被稱作有上限的通配符。
  • <? super T>被稱作有下限的通配符。

無限定通配符<?>

無限定通配符經常與容器類配合使用,它其中的 ? 其實代表的是未知類型,所以涉及到 ? 時的操作,一定與具體類型無關。

  1. public void testWildCards(Collection<?> collection){ 

上面的代碼中,方法內的參數是被無限定通配符修飾的 Collection 對象,它隱略地表達了一個意圖或者可以說是限定,那就是 testWidlCards() 這個方法內部無需關注 Collection 中的真實類型,因為它是未知的。所以,你只能調用 Collection 中與類型無關的方法。

相對應,前者?代表類型T及T的子類,后者?代表T及T的超類。

值得注意的是,如果用泛型方法來取代通配符,那么上面代碼中 collection 是能夠進行寫操作的。只不過要進行強制轉換。

二、什么是泛型的類型擦除?

Java泛型這個特性是從JDK 1.5才開始加入的,因此為了兼容之前的版本,Java泛型的實現采取了“偽泛型”的策略,即Java在語法上支持泛型,但是在編譯階段會進行所謂的“類型擦除”(Type Erasure),將所有的泛型表示(尖括號中的內容)都替換為具體的類型(其對應的原生態類型),就像完全沒有泛型一樣。理解類型擦除對于用好泛型是很有幫助的,尤其是一些看起來“疑難雜癥”的問題,弄明白了類型擦除也就迎刃而解了。

  • 泛型的類型擦除原則是:
  • 消除類型參數聲明,即刪除<>及其包圍的部分。
  • 根據類型參數的上下界推斷并替換所有的類型參數為原生態類型:如果類型參數是無限制通配符或沒有上下界限定則替換為Object,如果存在上下界限定則根據子類替換原則取類型參數的最左邊限定類型(即父類)。
  • 為了保證類型安全,必要時插入強制類型轉換代碼。
  • 自動產生“橋接方法”以保證擦除類型后的代碼仍然具有泛型的“多態性”。

1.類型擦除做了什么?

上面我們說了,編譯完成后會對泛型進行類型擦除,如果想要眼見為實,實際看一下的話應該怎么辦呢?那么就需要對編譯后的字節碼文件進行反編譯了,這里使用一個輕量級的小工具Jad來進行反編譯,Jad的使用也很簡單,下載解壓后,把需要反編譯的字節碼文件放在目錄下,然后在命令行里執行下面的命令就可以在同目錄下生成反編譯后的.java文件了:

  1. jad -sjava Test.class 

好了,工具準備好了,下面我們就看一下不同情況下的類型擦除。

無限制類型擦除

當類定義中的類型參數沒有任何限制時,在類型擦除后,會被直接替換為Object。在下面的例子中,中的類型參數T就全被替換為了Object(左側為編譯前的代碼,右側為通過字節碼文件反編譯得到的代碼):

有限制類型擦除 

當類定義中的類型參數存在限制時,在類型擦除中替換為類型參數的上界或者下界。下面的代碼中,經過擦除后T被替換成了Integer:

擦除方法中的類型參數

比較下面兩邊的代碼,可以看到在擦除方法中的類型參數時,和擦除類定義中的類型參數一致,無限制時直接擦除為Object,有限制時則會被擦除為上界或下界:

2.類型擦除帶來了哪些局限性?

類型擦除,是泛型能夠與之前的 java 版本代碼兼容共存的原因。但也因為類型擦除,它會抹掉很多繼承相關的特性,這是它帶來的局限性。

理解類型擦除有利于我們繞過開發當中可能遇到的雷區,同樣理解類型擦除也能讓我們繞過泛型本身的一些限制。比如

正常情況下,因為泛型的限制,編譯器不讓最后一行代碼編譯通過,因為類似不匹配,但是,基于對類型擦除的了解,利用反射,我們可以繞過這個限制。

  1. public interface List<E> extends Collection<E>{ 
  2.    
  3.    boolean add(E e); 

上面是 List 和其中的 add() 方法的源碼定義。

因為 E 代表任意的類型,所以類型擦除時,add 方法其實等同于:

  1. boolean add(Object obj); 

那么,利用反射,我們繞過編譯器去調用 add 方法。

  1. public class ToolTest { 
  2.  
  3.   public static void main(String[] args) { 
  4.     List<Integer> ls = new ArrayList<>(); 
  5.     ls.add(23); 
  6. //    ls.add("text"); 
  7.     try { 
  8.       Method method = ls.getClass().getDeclaredMethod("add",Object.class); 
  9.  
  10.       method.invoke(ls,"test"); 
  11.       method.invoke(ls,42.9f); 
  12.     } catch (NoSuchMethodException e) { 
  13.       // TODO Auto-generated catch block 
  14.       e.printStackTrace(); 
  15.     } catch (SecurityException e) { 
  16.       // TODO Auto-generated catch block 
  17.       e.printStackTrace(); 
  18.     } catch (IllegalAccessException e) { 
  19.       // TODO Auto-generated catch block 
  20.       e.printStackTrace(); 
  21.     } catch (IllegalArgumentException e) { 
  22.       // TODO Auto-generated catch block 
  23.       e.printStackTrace(); 
  24.     } catch (InvocationTargetException e) { 
  25.       // TODO Auto-generated catch block 
  26.       e.printStackTrace(); 
  27.     } 
  28.  
  29.     for ( Object o: ls){ 
  30.       System.out.println(o); 
  31.     } 
  32.   } 

打印結果是:

  1. 23 
  2. test 
  3. 42.9 

可以看到,利用類型擦除的原理,用反射的手段就繞過了正常開發中編譯器不允許的操作限制。

 

責任編輯:武曉燕 來源: 碼蟲甲
相關推薦

2021-07-29 09:20:18

Java泛型String

2017-03-07 11:45:57

DevOps容器

2017-04-10 15:11:16

2021-09-28 06:28:50

云原生安全云計算

2018-01-03 11:35:34

推送AndroidiOS

2024-04-23 08:23:36

TypeScript泛型Generics

2022-07-12 06:17:43

GoogleGolang開發工作

2009-09-25 10:03:51

Java泛型

2009-09-01 17:59:36

C#泛型的作用

2011-06-03 08:49:54

Java

2015-07-13 08:49:54

2017-10-12 10:20:13

服務器運行壽命

2021-06-17 06:51:32

Java泛型Java編程

2021-09-29 18:17:30

Go泛型語言

2019-06-25 15:00:53

SpringNullJava

2021-07-01 06:47:30

Java泛型泛型擦除

2011-03-21 16:26:28

java泛型

2021-06-18 08:25:42

Java泛型通配符

2021-03-26 08:41:11

Go語言Docker

2020-10-20 10:17:20

Java泛型Type
點贊
收藏

51CTO技術棧公眾號

www.欧美日韩| 雨宫琴音一区二区在线| 欧美肥妇毛茸茸| 日韩免费在线观看av| 天天操天天射天天舔| 日韩二区三区四区| 另类图片亚洲另类| 插吧插吧综合网| 97色婷婷成人综合在线观看| 亚洲福利一区二区三区| 欧洲一区二区在线| 成人1区2区3区| 久久婷婷亚洲| 欧美激情视频三区| 日韩福利在线视频| 国产一区二区在线视频你懂的| 91高清视频免费看| 国产主播自拍av| 黄色动漫在线| 久久久久88色偷偷免费| 成人黄色影片在线| 99热国产在线观看| 亚洲老妇激情| 国产一区二区三区在线播放免费观看 | 精品久久久久久久| 亚洲精品一区二区三区精华液| 免费涩涩18网站入口| av中文在线资源库| 亚洲欧美二区三区| 亚洲成人蜜桃| 瑟瑟在线观看| 99久久99久久久精品齐齐| 91在线中文字幕| 最好看的日本字幕mv视频大全| 欧美日韩一区自拍| 久久久999精品| 日本黄色小视频在线观看| 日韩美女毛片| 亚洲国产精品成人av| 国产调教打屁股xxxx网站| 日本在线一区二区| 欧美人牲a欧美精品| 国产激情在线观看视频| 伊人久久综合一区二区| 午夜精品久久久久久久久久| 久久www视频| 毛片激情在线观看| 中文字幕欧美一| 亚洲第一导航| av在线电影播放| 欧美激情综合五月色丁香小说| 欧美日韩国产精品一卡| 三级无遮挡在线观看| 99精品欧美一区| 久久久久久a亚洲欧洲aⅴ| 免费观看黄色一级视频| 国产高清在线精品| 成人情视频高清免费观看电影| av网站在线观看免费| 国产一区二区三区日韩| 91麻豆国产语对白在线观看| 91成年人视频| 国产精品一区二区视频| 成人欧美一区二区三区在线观看| 亚洲国产成人在线观看| 成人精品视频.| 精品无人区一区二区三区| 色综合久久网女同蕾丝边| 久久亚洲欧美国产精品乐播| 日本电影一区二区三区| 日本高清视频在线观看| 亚洲视频资源在线| 99热这里只有精品免费| 99re6在线精品视频免费播放| 午夜精品久久一牛影视| 日韩中文字幕组| 欧美男女视频| 欧美videos中文字幕| 精品中文字幕在线播放| 欧美精品一区二区久久| 久久国产精品久久久久| 精品在线视频免费| 美女爽到呻吟久久久久| 91久久久在线| 三级视频在线| 国产精品电影院| 国产精品久久久久9999爆乳| 一个人www视频在线免费观看| 在线亚洲一区观看| 91大神免费观看| 欧美一区 二区| 日韩在线免费高清视频| 久久综合激情网| 久久久精品性| 97人人模人人爽人人少妇| 日韩av视屏| 亚洲视频狠狠干| 精品欧美一区免费观看α√| 主播大秀视频在线观看一区二区| 欧美一区午夜精品| 三上悠亚ssⅰn939无码播放| 一区二区三区中文| 国产福利精品av综合导导航| 国产www视频| 久久九九影视网| 亚洲天堂第一区| 男人最爱成人网| 精品噜噜噜噜久久久久久久久试看 | 在线丨暗呦小u女国产精品| 日韩在线不卡av| 亚洲欧美视频| 成人91视频| 日本网站在线免费观看视频| 五月天丁香久久| www激情五月| 精品国产一区二区三区四区| 欧美激情一级二级| 国产又黄又粗又猛又爽| 久久久久久麻豆| 3d动漫一区二区三区| 伊人久久大香伊蕉在人线观看热v| 日韩成人在线播放| 久久久久亚洲av无码专区| 男男成人高潮片免费网站| 国产一区精品视频| 在线观看男女av免费网址| 欧美日韩情趣电影| 日韩中文字幕有码| 久久激情久久| 国产精品免费一区二区| 最新日本在线观看| 欧美精品日日鲁夜夜添| 男人的天堂官网| 麻豆9191精品国产| 精品国产乱码一区二区三区四区 | 一区二区三区丝袜| 国产精品区在线| 精品美女视频| 日韩av手机在线看| 欧美日韩激情视频一区二区三区| 亚洲.国产.中文慕字在线| 久久久久久无码精品人妻一区二区| 99久久综合狠狠综合久久aⅴ| 国产精品久久久久77777| 国产永久免费高清在线观看 | 日本xxxxxxx免费视频| 美女网站色精品尤物极品姐弟| 欧美激情亚洲自拍| 少妇高潮一区二区三区99小说| 亚洲成av人片在线观看| 欧产日产国产精品98| 夜夜嗨网站十八久久| 国精产品一区二区| 三妻四妾的电影电视剧在线观看| 亚洲精品理论电影| 国产精品999在线观看| av电影天堂一区二区在线| 日韩在线综合网| 国产99亚洲| 国产精品视频网站| 欧美性videos| 日韩精品一区二区三区三区免费 | 99视频免费观看| 大香伊人久久| 日韩精品一区二区视频| 三级网站在线播放| 国产精品家庭影院| 精产国品一区二区三区| 亚洲福利电影| 欧美日韩一区二| 成人a在线观看高清电影| 日韩在线观看视频免费| 亚洲精品久久久狠狠狠爱| 亚洲成精国产精品女| 免费看污黄网站在线观看| 美美哒免费高清在线观看视频一区二区| 日韩福利视频| crdy在线观看欧美| 97在线视频免费看| 国产女人在线视频| 制服丝袜亚洲播放| 日本亚洲欧美在线| 日本一区二区不卡视频| 乱码一区二区三区| 欧美中文字幕| 亚洲AV无码成人精品一区| 成人爽a毛片| 国产精品久久不能| 不卡一本毛片| 中文字幕欧美专区| 欧美视频xxx| 欧美日韩精品一区二区在线播放| 久热这里有精品| 久久香蕉国产线看观看99| 午夜剧场高清版免费观看| 亚洲国产精品第一区二区三区| 青娱乐一区二区| 97久久超碰| 国产精品美女在线| 欧美黑人猛交的在线视频| 一级做a爰片久久毛片美女图片| 国产精品一区二区三区在线免费观看| 婷婷久久综合九色综合伊人色| 美国精品一区二区| www.激情成人| 久久久九九九热| 91黄色在线看| 久久久久久久久丰满| 欧美精品一区二区三区久久| 日韩视频一区二区三区四区| 国产精品久久9| 亚洲风情在线资源| 欧美黑人性猛交| 婷婷在线视频| 亚洲天堂av女优| 五月天婷婷社区| 日韩午夜在线影院| 国产精品国产三级国产aⅴ| 一本一道久久a久久精品 | 狠狠躁夜夜躁久久躁别揉| 疯狂试爱三2浴室激情视频| 久久精品人人做| 亚洲观看黄色网| 国产999精品久久久久久| 亚欧激情乱码久久久久久久久| 国产一区二区你懂的| 人妻av无码专区| 欧美a级片网站| 亚洲一区三区| 精品一区二区三| 欧美重口乱码一区二区| 五月综合久久| 精品国产综合久久| 国产福利一区二区精品秒拍| 91久久精品www人人做人人爽| 色综合.com| 国产区亚洲区欧美区| 成人黄色免费观看| 国产精品极品尤物在线观看| av一区在线播放| 国产精品久久久久久久久影视| 中文在线а√天堂| 日本精品一区二区三区在线| av剧情在线观看| 91精品国产精品| 亚洲妇女成熟| 国产精品v日韩精品| 欧美舌奴丨vk视频| 日本高清视频精品| 国产精品专区免费| 国产97在线播放| 91tv亚洲精品香蕉国产一区| 国产精品一香蕉国产线看观看 | 国产精品一卡二卡三卡 | 丝袜美腿小色网| 综合自拍亚洲综合图不卡区| 性欧美videos| 亚洲综合色区另类av| 国产在线一二区| 性久久久久久久| 国产91精品一区| 在线亚洲欧美专区二区| 一级成人免费视频| 日韩一区二区在线观看视频| 亚洲国产视频一区二区三区| 精品久久人人做人人爰| 亚洲av片一区二区三区| 亚洲欧洲日本专区| 香蕉视频在线免费看| 欧美成人高清视频| 国产美女精品写真福利视频| 日韩av电影免费观看高清| 本网站久久精品| 成人自拍爱视频| 亚洲盗摄视频| 在线观看福利一区| 好看不卡的中文字幕| 欧美污视频网站| 久久精品国产网站| 日批视频免费看| 久久精品男人的天堂| 免费中文字幕日韩| 亚洲成a人片在线不卡一二三区| 四虎影院在线免费播放| 欧美一区二区在线免费播放| 天天爽夜夜爽夜夜爽| 色妞一区二区三区| 99riav视频在线观看| 国产在线久久久| 欧美深夜视频| 国产av第一区| 美女国产一区| 国产a级片视频| 国产精品午夜免费| 日韩欧美亚洲视频| 欧美男男青年gay1069videost | 中文字幕一区二区三区电影| 色屁屁www国产馆在线观看| 国产成人久久精品| 精品午夜视频| 日韩欧美99| 日韩网站在线| 色网站在线视频| 久久久久亚洲蜜桃| 国产在线视频99| 欧美日韩精品久久久| 美州a亚洲一视本频v色道| 欧美夫妻性生活视频| 国产精品久久久久久吹潮| 精品午夜一区二区| 欧美激情精品久久久六区热门| 欧美精品一区二区三区免费播放| 国产传媒一区在线| 中文国语毛片高清视频| 大伊人狠狠躁夜夜躁av一区| 国产三级午夜理伦三级| 亚洲性线免费观看视频成熟| av成人福利| 99久久伊人精品影院| 四季av一区二区三区免费观看| 青青视频在线播放| 成人av高清在线| 午夜写真片福利电影网| 欧美日韩三级视频| yiren22亚洲综合伊人22| 欧美诱惑福利视频| 精品网站aaa| 青草视频在线观看视频| 国产乱码精品一品二品| 国产人与禽zoz0性伦| 在线观看区一区二| 黄色毛片在线观看| 日韩美女在线看| 伊人久久大香线蕉无限次| 91成人在线观看喷潮教学| 国产成人精品一区二| 手机在线免费看毛片| 欧美裸体一区二区三区| 91青青在线视频| 国产精品久久久久久亚洲调教| 九九久久电影| 国产三区在线视频| 26uuu久久综合| 99精品在线播放| 国产丝袜视频一区| 韩国久久久久久| 色涩成人影视在线播放| 青青草原综合久久大伊人精品优势| 中文字幕成人动漫| 欧美在线播放高清精品| av在线收看| 亚洲影视中文字幕| 欧美久久久久| 国产高清成人久久| 欧美午夜无遮挡| 国产精品一级伦理| 成人黄在线观看| 欧美aⅴ99久久黑人专区| 91精品国产高清91久久久久久| 一区二区三区四区五区视频在线观看 | 日本午夜精品视频| 欧美精品v国产精品v日韩精品| 黄色在线论坛| 成人在线视频网址| 久久精品欧洲| 四虎国产成人精品免费一女五男| 欧美日本一区二区三区四区 | 亚洲在线视频网站| 十八禁一区二区三区| 日韩免费精品视频| 久久一区二区三区喷水| 国产成人精品综合久久久久99| 亚洲国产精品久久人人爱蜜臀| 欧美日韩国产中文字幕在线| 国产精品视频最多的网站| 亚洲国产精品综合久久久| 高清中文字幕mv的电影| 色一情一伦一子一伦一区| 欧美成人xxx| av在线不卡观看| 日韩精品乱码免费| 成人免费黄色小视频| 亚洲国产精品久久久久| 日韩精品一区二区三区av| 男人添女荫道口女人有什么感觉| 久久影院午夜片一区| 国产又黄又大又粗的视频| 亚洲18私人小影院| 97精品一区| 精品中文字幕在线播放| 在线成人免费视频| 中文字幕在线免费观看视频| 一区二区三区视频| 成人av在线播放网站| 91九色蝌蚪91por成人| 97国产成人精品视频| 欧美黄色大片在线观看| 波多野结衣加勒比| 在线91免费看| 欧美国产大片|