久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java 高级特性 --- 反射

發(fā)布時(shí)間:2024/7/23 java 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java 高级特性 --- 反射 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

From:Java 高級特性 --- 反射:https://www.jianshu.com/p/9be58ee20dee
From:Java 基礎(chǔ)之 --- 反射(非常重要):https://blog.csdn.net/sinat_38259539/article/details/71799078
From:Java?高級?/?反射機(jī)制:https://how2j.cn/k/reflection/reflection-class/108.html
From:Java 中反射機(jī)制詳解:https://www.cnblogs.com/whgk/p/6122036.html
From:深入分析 Java 方法反射的實(shí)現(xiàn)原理:https://www.jianshu.com/p/3ea4a6b57f87

Java 反射 - 超詳細(xì)講解(附源碼):https://blog.csdn.net/lililuni/article/details/83449088? ??https://github.com/lililuni/reflect-demo

ReflectDemo:https://gitee.com/peter_RD_nj/DemoAllInOne/tree/master/ReflectDemo

Java中泛型?Class<T>、T?與?Class<?>、 Object類?和?Class類、?object.getClass()?和?Object.class:https://blog.csdn.net/freeking101/article/details/109247406

1. 概述

反射是框架設(shè)計(jì)的靈魂
使用前提條件:必須先得到代表的字節(jié)碼的Class,Class類?用于表示 .class文件?( 字節(jié)碼 )

注意:在運(yùn)行期間,一個(gè)類,只有一個(gè)Class對象產(chǎn)生。

1.1 定義

JAVA反射機(jī)制(?https://baike.baidu.com/item/JAVA反射機(jī)制/6015990 )是:

?在運(yùn)行狀態(tài)中

  • 對于任意一個(gè),都能夠獲取到這個(gè)類的所有屬性和方法;
  • 對于任意一個(gè)對象 ( 即 類的實(shí)例 ),都能夠調(diào)用它的任意方法和屬性?(包括 私有的方法 屬性)
  • 這種 動態(tài)獲取信息 以及 動態(tài)調(diào)用對象方法 的功能 稱為 java 語言的反射機(jī)制。

想要使用反射機(jī)制,必須先 獲取到該類的 字節(jié)碼文件對象(.class),而反射使用的就是 Class類 中的方法。

通過 字節(jié)碼文件對象 就能夠通過該類中的方法獲取到我們想要的所有信息 ( 方法,屬性,類名,父類名,實(shí)現(xiàn)的所有接口等等)

每一個(gè)類 對應(yīng)著 一個(gè)字節(jié)碼文件?也就對應(yīng)著 一個(gè)Class類型的對象,也就是 字節(jié)碼文件對象

反射就是把 編寫的java類 中的各種成分映射成一個(gè)個(gè)的Java對象

例如:一個(gè)類有:成員變量、方法、構(gòu)造方法、包等等信息,利用反射技術(shù)可以對一個(gè)類進(jìn)行解剖,把個(gè)個(gè)組成部分映射成一個(gè)個(gè)對象。
? ? ? ? ? ( 其實(shí):一個(gè)類中的這些成員方法、構(gòu)造方法、在加入類中都有一個(gè)類來描述 )
如圖是類的正常加載過程:反射的原理在與class對象。
熟悉一下加載的時(shí)候:Class對象 的由來是將 class文件 讀入內(nèi)存,并為之創(chuàng)建一個(gè) Class對象。

其中這個(gè) Class對象 很特殊。我們先了解一下這個(gè) Class類

二、查看 Class類 在 java 中的 api 詳解(1.7的API)

Java8 API 中文:Java 8 中文版 - 在線API中文手冊 - 碼工具? ??Java8 API 英文:Java Platform SE 8

如何閱讀 java 中的 api 詳見 java基礎(chǔ)之 --- String字符串處理

Class?類的實(shí)例表示正在運(yùn)行的 Java 應(yīng)用程序中的類和接口。也就是jvm中有N多的實(shí)例每個(gè)類都有該Class對象。(包括基本數(shù)據(jù)類型)

Class?沒有公共構(gòu)造方法。Class?對象是在加載類時(shí)由 Java 虛擬機(jī)以及通過調(diào)用類加載器中的defineClass?方法自動構(gòu)造的。也就是這不需要我們自己去處理創(chuàng)建,JVM已經(jīng)幫我們創(chuàng)建好了。

沒有公共的構(gòu)造方法,方法共有64個(gè)太多了。下面用到哪個(gè)就詳解哪個(gè)吧

1.2 反射的用途和使用

在日常的第三方應(yīng)用開發(fā)過程中,經(jīng)常會遇到 某個(gè)類某個(gè)成員變量方法?或是 屬性?是私有的或是只對系統(tǒng)應(yīng)用開放,這時(shí)候就可以利用 Java 的反射機(jī)制通過反射來獲取所需的私有成員或是方法。當(dāng)然,也不是所有的都適合反射,之前就遇到一個(gè)案例,通過反射得到的結(jié)果與預(yù)期不符。閱讀源碼發(fā)現(xiàn),經(jīng)過層層調(diào)用后在最終返回結(jié)果的地方對應(yīng)用的權(quán)限進(jìn)行了校驗(yàn),對于沒有權(quán)限的應(yīng)用返回值是沒有意義的缺省值,否則返回實(shí)際值,這樣就起到保護(hù)用戶隱私的目的。

假設(shè)我們現(xiàn)在有一個(gè)?Hero類

package pojo;public class Hero {public String name; //姓名public float hp; //血量public float armor; //護(hù)甲public int moveSpeed; //移動速度 }

1、獲取類對象

獲取 類對象 ?字節(jié)碼文件對象 的 3種方式

  • Class.forName()? ? ? ? ? ? ? ? // 常用。傳入 類名的字符串 即可得到 類對象
    ? ? ? ? 通過Class類的靜態(tài)方法: forName(String className)
    ? ? ? ? // 通過Class類中的靜態(tài)方法forName,直接獲取到一個(gè)類的字節(jié)碼文件對象,
    ? ? ? ? // 此時(shí)該類還是源文件階段,并沒有變?yōu)樽止?jié)碼文件。
    ? ? ? ? Class clazz1 = Class.forName("全限定類名");
  • Hero.class? ? ? ? ? ? ? ? ? ? ? ? ?//?需要導(dǎo)入類的包,依賴太強(qiáng),不導(dǎo)包就拋編譯錯誤
    ? ? ? ?(?任何數(shù)據(jù)類型(包括基本數(shù)據(jù)類型)都有一個(gè) "靜態(tài)" 的 class屬性 )
    ? ? ? // 當(dāng)類被加載成.class文件時(shí),此時(shí)Person類變成了.class,
    ? ? ? // 在獲取該字節(jié)碼文件對象,也就是獲取自己, 該類處于字節(jié)碼階段。
    ? ? ? Class clazz2??= Person.class;    
  • new Hero().getClass()? ? ? ?//?對象都有了還要反射干什么。。。
    ? ? ? ? (?Object??-->??getClass();? 因?yàn)?所有類 都繼承 Object類。從而調(diào)用 Object類getClass方法 來獲取 )
    ? ? ? ?// 通過類的實(shí)例獲取該類的字節(jié)碼文件對象,該類處于創(chuàng)建對象階段  
    ? ? ? ?Class clazz3 = p.getClass();

有了 字節(jié)碼文件對象 才能獲得類中所有的信息,上面最常用的是:?Class clazz1 = Class.forName("全限定類名");

在一個(gè)JVM中,一種類,只會有一個(gè)類對象存在。所以以上 3種方式取出來的類對象,都是一樣。(此處準(zhǔn)確是在ClassLoader下,只有一個(gè)類對象)

package pojo;public class ObjectTest {public static void main(String[] args) {String className = "pogo.Hero";try {// 獲取類對象的第一種方式Class pClass1 = Class.forName(className);// 獲取類對象的第二種方式Class pClass2 = Hero.class;// 獲取類對象的第三種方式Class pClass3 = new Hero().getClass();System.out.println(pClass1 == pClass2); //輸出trueSystem.out.println(pClass1 == pClass3); //輸出true} catch (ClassNotFoundException e) {// TODO Auto-generated catch blocke.printStackTrace();}} }

注意:在運(yùn)行期間,一個(gè)類,只有一個(gè)Class對象產(chǎn)生。

2、Class類 的 API 詳解

2.1、通過字節(jié)碼對象創(chuàng)建實(shí)例對象

2.2、獲取指定構(gòu)造器方法。constructor 如果沒有無參構(gòu)造,只有有參構(gòu)造如何創(chuàng)建實(shí)例呢?

總結(jié)上面創(chuàng)建實(shí)例對象

Class類 的 newInstance() 方法是使用該類無參的構(gòu)造函數(shù)創(chuàng)建對象,如果一個(gè)類沒有無參的構(gòu)造函數(shù),?就不能這樣創(chuàng)建了。
可以調(diào)用Class類的 getConstructor(String.class, int.class) 方法獲取一個(gè)指定的構(gòu)造函數(shù),然后再調(diào)用 Constructor類的 newInstance("張三",20)方法創(chuàng)建對象

獲取全部構(gòu)造方法

2.3、獲取 成員變量 并使用 Field對象

獲取指定成員變量

Class.getField(String)方法可以獲取類中的指定字段(可見的),?如果是私有的可以用 getDeclaedField("name")方法獲取,通過 set(obj, "李四")方法可以設(shè)置指定對象上該字段的值,?如果是私有的需要先調(diào)用 setAccessible(true) 設(shè)置訪問權(quán)限,用獲取的指定的字段調(diào)用 get(obj) 可以獲取指定對象中該字段的值

獲取全部成員變量

2.4、獲得方法并使用 Method

Class.getMethod(String, Class...) 和 Class.getDeclaredMethod(String, Class...)方法可以獲取類中的指定方法,    

如果為私有方法,則需要使用?setAccessible(true); 打開一個(gè)權(quán)限。用 invoke(Object, Object...) 可以調(diào)用該方法,跟上面同理,也能一次性獲得所有的方法

2.5、獲得該類的所有接口

? ? ? ? Class[] getInterfaces():確定此對象所表示的類或接口實(shí)現(xiàn)的接口
? ? ? ? 返回值:接口的字節(jié)碼文件對象的數(shù)組

2.6、獲取指定資源的輸入流

? ? ? ? InputStream?getResourceAsStream(String name)  
? ? ? ? return:一個(gè) InputStream 對象;如果找不到帶有該名稱的資源,則返回?null
? ? ? ? 參數(shù):所需資源的名稱,如果以"/"開始,則絕對資源名為"/"后面的一部分。

2.7、動態(tài)代理的概述和實(shí)現(xiàn)

動態(tài)代理:一種設(shè)計(jì)模式,其非常簡單,很容易理解,你自己可以做這件事,但是覺得自己做非常麻煩或者不方便,所以就叫另一個(gè)人(代理)來幫你做這個(gè)事情,而你就不用管了,這就是動態(tài)代理。舉個(gè)例子,買火車票叫人代買。?

程序運(yùn)行過程中產(chǎn)生的這個(gè)對象,其實(shí)就是我們剛才反射講解的內(nèi)容,所以,動態(tài)代理其實(shí)就是通過反射來生成一個(gè)代理

在Java中 java.lang.reflect 包下提供了一個(gè) Proxy類 和 一個(gè)InvocationHandler接口,通過使用 這個(gè)類 和 接口 就可以生成動態(tài)代理對象。

JDK提供的代理只能針對接口做代理。我們有更強(qiáng)大的代理 cglib,Proxy類中的方法創(chuàng)建動態(tài)代理類對象分三步,但是注意JDK提供的代理只能針對接口做代理,也就是下面的第二步返回的必須要是一個(gè)接口。

  • 1、new出代理對象,通過實(shí)現(xiàn)InvacationHandler接口,然后new出代理對象來。
  • 2、通過Proxy類中的靜態(tài)方法newProxyInstance,來將代理對象假裝成那個(gè)被代理的對象,也就是如果叫人幫我們代買火車票一樣,那個(gè)代理就假裝成我們自己本人
  • 3、執(zhí)行方法,代理成功

將代理對象中的內(nèi)容進(jìn)行實(shí)現(xiàn)

1、2、3步

注意 newProxyInstance 的三個(gè)參數(shù),第一個(gè),類加載器,第二個(gè)被代理對象的接口,第三個(gè)代理對象。  

2.8、還有很多方法,比如獲得類加載器,等等,具體還需要別的,就通過查看API文檔來解決。

3、反射機(jī)制的應(yīng)用實(shí)例

應(yīng)用實(shí)例 1:

3.1、利用反射,在泛型為 int 的 arryaList 集合中存放一個(gè) String 類型的對象

原理:集合中的泛型只在編譯器有效,而到了運(yùn)行期,泛型則會失效,

3.2、利用反射,簡化編寫Servlet的個(gè)數(shù)。

什么意思呢?每當(dāng)我們寫一個(gè)功能時(shí),就需要寫一個(gè)對應(yīng)的Servlet,導(dǎo)致最后Servlet有很多,自己都看不過來,所以對其進(jìn)行了優(yōu)化,兩種方式,

3.2.1、每次從頁面?zhèn)鬟^來一個(gè)參數(shù),method="xxx"; 然后編寫一個(gè)Servlet,獲得其參數(shù)method的值,進(jìn)行判斷,如果是add,則調(diào)用add方法,如果是delete,則調(diào)用delete方法,這樣就可以寫在一個(gè)servlet中實(shí)現(xiàn)所有的功能了。 

3.2.2、利用反射

編寫一個(gè)BaseServlet 繼承 HttpServlet,這是一個(gè)通用的 BaseServlet。需要明白 servlet 的生命周期

編寫具體實(shí)現(xiàn)的方法 servlet 類。

MySerlvet001 extends BaseServlet

解釋:需要明白servlet的生命周期,也就是service方法,因?yàn)槭莝ervlet,所以在訪問的時(shí)候,會經(jīng)過service方法,而子類MyServlet001中并沒有,所以就到父類BaseServlet中找,發(fā)現(xiàn)有,然后獲取參數(shù)即知道了需要調(diào)用什么方法,因?yàn)榉椒ǖ木帉懚荚谧宇愔?#xff0c;所以通過反射,獲取到子類中對應(yīng)的方法并運(yùn)行,其中需要注意的是this這個(gè)參數(shù)在BaseServlet中的用法。需要理解它。才能理解我們這個(gè)程序。

對其一些api進(jìn)行講解,不懂的就查看API,重要的思想,就要在實(shí)際中遇到了才能得到更好的理解。

應(yīng)用實(shí)例 2:

反射非常強(qiáng)大,但是學(xué)習(xí)了之后,會不知道該如何使用,反而覺得還不如直接調(diào)用方法來的直接和方便。
通常來說,需要在學(xué)習(xí)了?Spring?的依賴注入,反轉(zhuǎn)控制之后,才會對反射有更好的理解,但是剛學(xué)到這里的同學(xué),不一定接觸了Spring,所以在這里舉兩個(gè)例子,來演示一下反射的一種實(shí)際運(yùn)用。

步驟?1?:?業(yè)務(wù)類:https://how2j.cn/k/reflection/reflection-usage/1111.html#step4262
步驟?2?:?非反射方式:https://how2j.cn/k/reflection/reflection-usage/1111.html#step4263
步驟?3?:?反射方式:https://how2j.cn/k/reflection/reflection-usage/1111.html#step4264

  • 步驟 1 : 業(yè)務(wù)類 ??

首先準(zhǔn)備兩個(gè)業(yè)務(wù)類,這兩個(gè)業(yè)務(wù)類很簡單,就是各自都有一個(gè)業(yè)務(wù)方法,分別打印不同的字符串

Service1.java

package reflection;public class Service1 {public void doService2(){System.out.println("111111111111 業(yè)務(wù)方法1");} }

Service2.java

package reflection;public class Service2 {public void doService2(){System.out.println("222222222222 業(yè)務(wù)方法2");} }
  • 步驟 2 : 非反射方式 ??

當(dāng)需要從第一個(gè)業(yè)務(wù)方法切換到第二個(gè)業(yè)務(wù)方法的時(shí)候,使用非反射方式,必須修改代碼,并且重新編譯運(yùn)行,才可以達(dá)到效果

package reflection;public class Test {public static void main(String[] args) {new Service1().doService1();} }

修改后代碼:

package reflection;public class Test {public static void main(String[] args) {// new Service1().doService1();new Service1().doService2(); // 這里修改為調(diào)用 doService2} }
  • 步驟 3 : 反射方式 ??

使用反射方式,首先準(zhǔn)備一個(gè)配置文件,就叫做 spring.txt 吧,放在 src 目錄下。 里面存放的是類的名稱,和要調(diào)用的方法名。

spring.txt

class=reflection.Service1 method=doService1

在測試類Test中,首先取出類名稱和方法名,然后通過反射去調(diào)用這個(gè)方法。

package reflection;import java.io.File; import java.io.FileInputStream; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.util.Properties;public class Test {@SuppressWarnings({"rawtypes", "unchecked"})public static void main(String[] args) throws Exception {//從spring.txt中獲取類名稱和方法名稱File springConfigFile = new File("e:\\project\\j2se\\src\\spring.txt");Properties springConfig = new Properties();springConfig.load(new FileInputStream(springConfigFile));String className = (String) springConfig.get("class");String methodName = (String) springConfig.get("method");//根據(jù)類名稱獲取類對象Class clazz = Class.forName(className);//根據(jù)方法名稱,獲取方法對象Method m = clazz.getMethod(methodName);//獲取構(gòu)造器Constructor c = clazz.getConstructor();//根據(jù)構(gòu)造器,實(shí)例化出對象Object service = c.newInstance();//調(diào)用對象的指定方法m.invoke(service);} }

當(dāng)需要從調(diào)用第一個(gè)業(yè)務(wù)方法,切換到調(diào)用第二個(gè)業(yè)務(wù)方法的時(shí)候,不需要修改一行代碼,也不需要重新編譯,只需要修改配置文件 spring.txt,再運(yùn)行即可。
這也是?Spring框架?的最基本的原理,只是它做的更豐富,安全,健壯。

1.3 反射機(jī)制的相關(guān)類

與 Java 反射相關(guān)的類如下:

類名用途
Class 類代表 類的實(shí)體,在運(yùn)行的 Java 應(yīng)用程序中表示 類和接口
Field 類

代表 類的成員變量成員變量?也稱為 類的屬性

Method 類代表 類的方法
Constructor 類代表 類的構(gòu)造方法

1.4 利用反射機(jī)制 創(chuàng)建對象

基本步驟
? ? ? ? 與傳統(tǒng)的通過 new 來獲取對象的方式不同反射機(jī)制,反射會先拿到 Hero 的 "類對象",然后通過類對象獲取 "構(gòu)造器對象" ,再通過構(gòu)造器對象創(chuàng)建一個(gè)對象,具體步驟:

1. 獲取類對象? ? ? ? ?Class class = Class.forName("pojo.Hero");
2. 獲取構(gòu)造器對象??Constructor con = clazz.getConstructor(形參.class);
3. 獲取對象? ? ? ? ? ? ?Hero hero =con.newInstance(實(shí)參);

上面是最簡單的獲取方法,當(dāng) Hero 的 構(gòu)造方法 不是無參構(gòu)造方法時(shí),獲取構(gòu)造器對象略有不同,見下面測試:

構(gòu)造方法不同時(shí),獲取構(gòu)造器對象的方法

示例:

  • Hero 類 添加 6 種構(gòu)造方法
package pojo;public class Hero {public String name; //姓名public float hp; //血量public float armor; //護(hù)甲public int moveSpeed; //移動速度//---------------構(gòu)造方法-------------------Hero(String str) { // 默認(rèn)的構(gòu)造方法System.out.println("(默認(rèn))的構(gòu)造方法 s = " + str);}public Hero() { // 無參構(gòu)造方法System.out.println("調(diào)用了公有、無參構(gòu)造方法執(zhí)行了。。。");}public Hero(char name) { // 有一個(gè)參數(shù)的構(gòu)造方法System.out.println("姓名:" + name);}public Hero(String name, float hp) { // 有多個(gè)參數(shù)的構(gòu)造方法System.out.println("姓名:" + name + "血量:" + hp);}protected Hero(boolean n) { // 受保護(hù)的構(gòu)造方法System.out.println("受保護(hù)的構(gòu)造方法 n = " + n);}private Hero(float hp) { // 私有構(gòu)造方法System.out.println("私有的構(gòu)造方法 血量:" + hp);} }
  • 通過反射機(jī)制獲取對象
package test; public class ConstructorTest {/** 通過Class對象可以獲取某個(gè)類中的:構(gòu)造方法、成員變量、成員方法;并訪問成員;** 1.獲取構(gòu)造方法:* 1).批量的方法:* // 所有"公有的"構(gòu)造方法* public Constructor[] getConstructors()* // 獲取所有的構(gòu)造方法(包括私有、受保護(hù)、默認(rèn)、公有)* public Constructor[] getDeclaredConstructors()** 2).獲取單個(gè)的方法,并調(diào)用:* // 獲取單個(gè)的 "公有的" 構(gòu)造方法:* public Constructor getConstructor(Class... parameterTypes)* // 獲取"某個(gè)構(gòu)造方法"可以是私有的,或受保護(hù)、默認(rèn)、公有;* public Constructor getDeclaredConstructor(Class... parameterTypes)** 2.創(chuàng)建對象* // Constructor 對象調(diào)用* obj = clazz.getDeclaredConstructor(float.class);* obj.newInstance(Object... init_args)*/public static void main(String[] args) throws Exception {//1.加載Class對象Class clazz = Class.forName("pojo.Hero");//2.獲取所有公有構(gòu)造方法System.out.println("**********所有公有構(gòu)造方法**********");Constructor[] conArray = clazz.getConstructors();for(Constructor c : conArray){System.out.println(c);}System.out.println("*****所有的構(gòu)造方法(包括:私有、受保護(hù)、默認(rèn)、公有)*****");conArray = clazz.getDeclaredConstructors();for(Constructor c : conArray){System.out.println(c);}System.out.println("**********獲取公有、無參的構(gòu)造方法**********");Constructor con = clazz.getConstructor(null);//1>、因?yàn)槭菬o參的構(gòu)造方法所以類型是一個(gè)null,不寫也可以:這里需要的是一個(gè)參數(shù)的類型,切記是類型//2>、返回的是描述這個(gè)無參構(gòu)造函數(shù)的類對象。System.out.println("con = " + con);//調(diào)用構(gòu)造方法Object obj = con.newInstance();System.out.println("**********獲取私有構(gòu)造方法,并調(diào)用**********");con = clazz.getDeclaredConstructor(float.class);System.out.println(con);//調(diào)用構(gòu)造方法con.setAccessible(true); //暴力訪問(忽略掉訪問修飾符)obj = con.newInstance(100);} }

輸出:

**********************所有公有構(gòu)造方法********************************* public pojo.Hero(java.lang.String,float) public pojo.Hero(char) public pojo.Hero() ************所有的構(gòu)造方法(包括:私有、受保護(hù)、默認(rèn)、公有)*************** private pojo.Hero(float) protected pojo.Hero(boolean) public pojo.Hero(java.lang.String,float) public pojo.Hero(char) public pojo.Hero() pojo.Hero(java.lang.String) *****************獲取公有、無參的構(gòu)造方法******************************* con = public pojo.Hero() 調(diào)用了公有、無參構(gòu)造方法執(zhí)行了。。。 ******************獲取私有構(gòu)造方法,并調(diào)用******************************* private pojo.Hero(float) 私有的構(gòu)造方法 血量:100.0

總結(jié):

1. 獲取 構(gòu)造器對象方法:
? ? 1). 批量的方法:
? ? ? ? ? ? ? ? public Constructor[] getConstructors():? ? ? ? ? ? ? ?所有 "公有的" 構(gòu)造方法
? ? ? ? ? ? ? ? public Constructor[] getDeclaredConstructors(): 獲取所有的構(gòu)造方法 ( 包括 私有、受保護(hù)、默認(rèn)、公有)
? ? 2). 獲取單個(gè)的方法:
? ? ? ? ? ? ? ? public Constructor getConstructor(Class… parameterTypes):? ? ? ? ? ? ? ?獲取單個(gè)的 "公有的" 構(gòu)造方法
? ? ? ? ? ? ? ? public Constructor getDeclaredConstructor(Class…parameterTypes):? 獲取 "某個(gè)構(gòu)造方法" 可以是 私有的,或受保護(hù)、默認(rèn)、公有

2、 調(diào)用構(gòu)造方法:Constructor --> newInstance(Object... initargs)

newInstance 是 Constructor類的方法(管理構(gòu)造函數(shù)的類)
api 的解釋為:
? ? ? ? newInstance(Object... initargs)
? ? ? ? ? ? 使用此 Constructor 對象表示的構(gòu)造方法來創(chuàng)建該構(gòu)造方法的聲明類的新實(shí)例,并用指定的初始化參數(shù)初始化該實(shí)例。
? ? ? ? ? ? 它的返回值是T類型,所以newInstance是創(chuàng)建了一個(gè)構(gòu)造方法的聲明類的新實(shí)例對象。并為之調(diào)用

1.5?獲取成員變量并使用

基本步驟

1. 獲取 HeroPlus類 的對象?new方法/第2章中的方法?h
2. 獲取屬性?Field f1 = h.getDeclaredField("屬性名")
3. 修改屬性?f1.set(h,實(shí)參),注意這里的 h 是 對象,不是 類對象

示例:

  • 新增 HeroPlus 類
package pojo; public class HeroPlus {public String name;public float hp;public int damage;public int id;public String getName() {return name;}public void setName(String name) {this.name = name;}public HeroPlus(){}public HeroPlus(String string) {name =string;}@Overridepublic String toString() {return "Hero [name=" + name + "]";}public boolean isDead() {// TODO Auto-generated method stubreturn false;}public void attackHero(HeroPlus h2) {System.out.println(this.name+ " 正在攻擊 " + h2.getName());} }
  • 獲取屬性并修改
package test;public class ParaTest {public static void main(String[] args) {HeroPlus h = new HeroPlus();//使用傳統(tǒng)方式修改name的值為garenh.name = "garen";try {//獲取類HeroPlus的名字叫做name的字段Field f1 = h.getClass().getDeclaredField("name");//修改這個(gè)字段的值f1.set(h, "teemo");//打印被修改后的值System.out.println(h.name);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}} }

補(bǔ)充getFieldgetDeclaredField 的區(qū)別:

  • getField?只能獲取public?的,包括從父類繼承來的字段。
  • getDeclaredField 可以獲取本類所有的字段,包括 private 的,但是?不能獲取繼承來的字段。 ( 注: 這里只能獲取到private的字段,但并不能訪問該private字段的值,除非加上setAccessible(true))

示例 2:

student類:

package fanshe.field;public class Student {public Student() {}//**********字段*************//public String name;protected int age;char sex;private String phoneNum;@Overridepublic String toString() {return "Student [name=" + name + ", age=" + age + ", sex=" + sex+ ", phoneNum=" + phoneNum + "]";} }

測試類:

package fanshe.field;import java.lang.reflect.Field;/** 獲取成員變量并調(diào)用:** 1.批量的* 1).Field[] getFields():獲取所有的"公有字段"* 2).Field[] getDeclaredFields():獲取所有字段,包括:私有、受保護(hù)、默認(rèn)、公有;* 2.獲取單個(gè)的:* 1).public Field getField(String fieldName):獲取某個(gè)"公有的"字段;* 2).public Field getDeclaredField(String fieldName):獲取某個(gè)字段(可以是私有的)** 設(shè)置字段的值:* Field --> public void set(Object obj,Object value):* 參數(shù)說明:* 1.obj:要設(shè)置的字段所在的對象;* 2.value:要為字段設(shè)置的值;**/ public class Fields {public static void main(String[] args) throws Exception {//1.獲取Class對象Class stuClass = Class.forName("fanshe.field.Student");//2.獲取字段System.out.println("************獲取所有公有的字段********************");Field[] fieldArray = stuClass.getFields();for (Field f : fieldArray) {System.out.println(f);}System.out.println("************獲取所有的字段(包括私有、受保護(hù)、默認(rèn)的)********************");fieldArray = stuClass.getDeclaredFields();for (Field f : fieldArray) {System.out.println(f);}System.out.println("*************獲取公有字段**并調(diào)用***********************************");Field f = stuClass.getField("name");System.out.println(f);//獲取一個(gè)對象Object obj = stuClass.getConstructor().newInstance();//產(chǎn)生Student對象--》Student stu = new Student();//為字段設(shè)置值f.set(obj, "劉德華");//為Student對象中的name屬性賦值--》stu.name = "劉德華"//驗(yàn)證Student stu = (Student) obj;System.out.println("驗(yàn)證姓名:" + stu.name);System.out.println("**************獲取私有字段****并調(diào)用********************************");f = stuClass.getDeclaredField("phoneNum");System.out.println(f);f.setAccessible(true);//暴力反射,解除私有限定f.set(obj, "18888889999");System.out.println("驗(yàn)證電話:" + stu);} }

后臺輸出:

************獲取所有公有的字段******************** public java.lang.String fanshe.field.Student.name ************獲取所有的字段(包括私有、受保護(hù)、默認(rèn)的)******************** public java.lang.String fanshe.field.Student.name protected int fanshe.field.Student.age char fanshe.field.Student.sex private java.lang.String fanshe.field.Student.phoneNum *************獲取公有字段**并調(diào)用*********************************** public java.lang.String fanshe.field.Student.name 驗(yàn)證姓名:劉德華 **************獲取私有字段****并調(diào)用******************************** private java.lang.String fanshe.field.Student.phoneNum 驗(yàn)證電話:Student [name=劉德華, age=0, sex=

由此可見

調(diào)用字段時(shí):需要傳遞兩個(gè)參數(shù):

  • 第一個(gè)參數(shù):要傳入設(shè)置的對象
  • 第二個(gè)參數(shù):要傳入實(shí)參
// 產(chǎn)生Student對象? --->? Student stu = new Student(); Object obj = stuClass.getConstructor().newInstance();?//為字段設(shè)置值。為Student對象中的 name 屬性賦值 ---> stu.name = "劉德華" f.set(obj, "劉德華");

1.6?獲取成員方法并使用

  • 獲取 HeroPlus 類的對象?h
  • 獲取成員方法:
    public Method getMethod(String name ,Class<?>… parameterTypes):獲取"公有方法";(包含了父類的方法也包含Object類)
    public Method getDeclaredMethods(String name ,Class<?>… parameterTypes) :獲取成員方法,包括私有的(不包括繼承的)
    參數(shù)解釋:
    ??name : 方法名;
    ??Class … : 形參的Class類型對象
  • 調(diào)用方法
    Method --> public Object invoke(Object obj,Object… args):
    參數(shù)說明:
    ??obj : 要調(diào)用方法的對象;
    ??args:調(diào)用方式時(shí)所傳遞的實(shí)參;
  • 示例:

    package test;public class MethodTest {public static void main(String[] args) {HeroPlus h = new HeroPlus();try {// 獲取這個(gè)名字叫做setName,參數(shù)類型是String的方法Method m = h.getClass().getMethod("setName", String.class);// 對h對象,調(diào)用這個(gè)方法m.invoke(h, "蓋倫");// 使用傳統(tǒng)的方式,調(diào)用getName方法System.out.println(h.getName());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}} }

    示例 2:

    student類:

    package fanshe.method;public class Student {//**************成員方法***************//public void show1(String s) {System.out.println("調(diào)用了:公有的,String參數(shù)的show1(): s = " + s);}protected void show2() {System.out.println("調(diào)用了:受保護(hù)的,無參的show2()");}void show3() {System.out.println("調(diào)用了:默認(rèn)的,無參的show3()");}private String show4(int age) {System.out.println("調(diào)用了,私有的,并且有返回值的,int參數(shù)的show4(): age = " + age);return "abcd";} }

    測試類:

    package fanshe.method;import java.lang.reflect.Method;/** 獲取成員方法并調(diào)用:* * 1.批量的:* public Method[] getMethods():獲取所有"公有方法";(包含了父類的方法也包含Object類)* public Method[] getDeclaredMethods():獲取所有的成員方法,包括私有的(不包括繼承的)* 2.獲取單個(gè)的:* public Method getMethod(String name,Class<?>... parameterTypes):* 參數(shù):* name : 方法名;* Class ... : 形參的Class類型對象* public Method getDeclaredMethod(String name,Class<?>... parameterTypes)* * 調(diào)用方法:* Method --> public Object invoke(Object obj,Object... args):* 參數(shù)說明:* obj : 要調(diào)用方法的對象;* args:調(diào)用方式時(shí)所傳遞的實(shí)參; ):*/ public class MethodClass {public static void main(String[] args) throws Exception {//1.獲取Class對象Class stuClass = Class.forName("fanshe.method.Student");//2.獲取所有公有方法System.out.println("***************獲取所有的”公有“方法*******************");stuClass.getMethods();Method[] methodArray = stuClass.getMethods();for (Method m : methodArray) {System.out.println(m);}System.out.println("***************獲取所有的方法,包括私有的*******************");methodArray = stuClass.getDeclaredMethods();for (Method m : methodArray) {System.out.println(m);}System.out.println("***************獲取公有的show1()方法*******************");Method m = stuClass.getMethod("show1", String.class);System.out.println(m);//實(shí)例化一個(gè)Student對象Object obj = stuClass.getConstructor().newInstance();m.invoke(obj, "劉德華");System.out.println("***************獲取私有的show4()方法******************");m = stuClass.getDeclaredMethod("show4", int.class);System.out.println(m);m.setAccessible(true);//解除私有限定Object result = m.invoke(obj, 20);//需要兩個(gè)參數(shù),一個(gè)是要調(diào)用的對象(獲取有反射),一個(gè)是實(shí)參System.out.println("返回值:" + result);} }

    由此可見:

    // 調(diào)用制定方法(所有包括私有的),需要傳入兩個(gè)參數(shù), // 第一個(gè)是調(diào)用的方法名稱, // 第二個(gè)是方法的形參類型,切記是類型。 m = stuClass.getDeclaredMethod("show4", int.class); System.out.println(m);// 解除私有限定 m.setAccessible(true); // 需要兩個(gè)參數(shù),一個(gè)是要調(diào)用的對象(獲取有反射),一個(gè)是實(shí)參 Object result = m.invoke(obj, 20); System.out.println("返回值:" + result);//

    控制臺輸出:

    ***************獲取所有的”公有“方法******************* public void fanshe.method.Student.show1(java.lang.String) public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException public final void java.lang.Object.wait() throws java.lang.InterruptedException public boolean java.lang.Object.equals(java.lang.Object) public java.lang.String java.lang.Object.toString() public native int java.lang.Object.hashCode() public final native java.lang.Class java.lang.Object.getClass() public final native void java.lang.Object.notify() public final native void java.lang.Object.notifyAll() ***************獲取所有的方法,包括私有的******************* public void fanshe.method.Student.show1(java.lang.String) private java.lang.String fanshe.method.Student.show4(int) protected void fanshe.method.Student.show2() void fanshe.method.Student.show3() ***************獲取公有的show1()方法******************* public void fanshe.method.Student.show1(java.lang.String) 調(diào)用了:公有的,String參數(shù)的show1(): s = 劉德華 ***************獲取私有的show4()方法****************** private java.lang.String fanshe.method.Student.show4(int) 調(diào)用了,私有的,并且有返回值的,int參數(shù)的show4(): age = 20 返回值:abcd

    其實(shí)這里的成員方法:在模型中有屬性一詞,就是那些 setter()方法 和 getter()方法。還有字段組成,這些內(nèi)容在 內(nèi)省 中詳解

    1.7?獲取 main 方法并使用

    示例:

    • HeroPlus 新增main方法
    public static void main(String[] args) {System.out.println("執(zhí)行main方法");}
  • 通過下面步驟獲取 main方法
  • package test;public class MainTest {public static void main(String[] args) {try {//1、獲取HeroPlus對象的字節(jié)碼Class clazz = Class.forName("pojo.HeroPlus");//2、獲取main方法,第一個(gè)參數(shù):方法名稱,第二個(gè)參數(shù):方法形參的類型,Method methodMain = clazz.getMethod("main", String[].class);//3、調(diào)用main方法// methodMain.invoke(null, new String[]{"a","b","c"});// 第一個(gè)參數(shù),對象類型,因?yàn)榉椒ㄊ莝tatic靜態(tài)的,所以為null可以,// 第二個(gè)參數(shù)是String數(shù)組,這里要注意在jdk1.4時(shí)是數(shù)組,jdk1.5之后是可變參數(shù)// 這里拆的時(shí)候?qū)? new String[]{"a","b","c"} 拆成3個(gè)對象。所以需要將它強(qiáng)轉(zhuǎn)。methodMain.invoke(null, (Object) new String[]{"a", "b", "c"});//方式一// methodMain.invoke(null, new Object[]{new String[]{"a","b","c"}});//方式二} catch (Exception e) {e.printStackTrace();}} }

    示例 2:

    student類:

    package fanshe.main;public class Student {public static void main(String[] args) {System.out.println("main方法執(zhí)行了。。。");} }

    測試類:

    package fanshe.main;import java.lang.reflect.Method;/*** 獲取Student類的main方法、不要與當(dāng)前的main方法搞混了*/ public class Main {public static void main(String[] args) {try {//1、獲取Student對象的字節(jié)碼Class clazz = Class.forName("fanshe.main.Student");//2、獲取main方法。 // 第一個(gè)參數(shù):方法名稱,第二個(gè)參數(shù):方法形參的類型,Method methodMain = clazz.getMethod("main", String[].class);//3、調(diào)用main方法// methodMain.invoke(null, new String[]{"a","b","c"});// 第一個(gè)參數(shù),對象類型,因?yàn)榉椒ㄊ莝tatic靜態(tài)的,所以為null可以,// 第二個(gè)參數(shù)是String數(shù)組,這里要注意在jdk1.4時(shí)是數(shù)組,jdk1.5之后是可變參數(shù)// 這里拆的時(shí)候?qū)? new String[]{"a","b","c"} 拆成3個(gè)對象。。。所以需要將它強(qiáng)轉(zhuǎn)。methodMain.invoke(null, (Object) new String[]{"a", "b", "c"});//方式一// methodMain.invoke(null, new Object[]{new String[]{"a","b","c"}});//方式二} catch (Exception e) {e.printStackTrace();}} }

    控制臺輸出:main方法執(zhí)行了。。。

    深入分析 Java 方法反射的實(shí)現(xiàn)原理

    From:https://www.jianshu.com/p/3ea4a6b57f87

    從一起GC血案談到反射原理 (?https://mp.weixin.qq.com/s/5H6UHcP6kvR2X5hTj_SBjA )?,就把 Java 方法的反射機(jī)制實(shí)現(xiàn)擼了一遍。

    方法反射實(shí)例

    public class ReflectCase {public static void main(String[] args) throws Exception {Proxy target = new Proxy();Method method = Proxy.class.getDeclaredMethod("run");method.invoke(target);}static class Proxy {public void run() {System.out.println("run");}} }

    通過 Java 的反射機(jī)制,可以在運(yùn)行期間調(diào)用對象的任何方法,如果大量使用這種方式進(jìn)行調(diào)用,會有性能或內(nèi)存隱患么?為了徹底了解方法的反射機(jī)制,只能從底層代碼入手了。

    Method 獲取

    調(diào)用 Class 類的 getDeclaredMethod 可以獲取 指定方法名和參數(shù)方法對象 Method

    getDeclaredMethod

    其中?privateGetDeclaredMethods?方法從 緩存 或 JVM中 獲取該Class中申明的方法列表,searchMethods方法將從返回的方法列表里找到一個(gè)匹配名稱和參數(shù)的方法對象。

    searchMethods

    如果找到一個(gè)匹配的?Method,則重新 copy 一份返回,即?Method.copy()方法

    所次每次調(diào)用getDeclaredMethod方法返回的Method對象其實(shí)都是一個(gè)新的對象,且新對象的root屬性都指向原來的Method對象,如果需要頻繁調(diào)用,最好把Method對象緩存起來。

    privateGetDeclaredMethods

    從緩存或 JVM 中獲取該?Class?中申明的方法列表,實(shí)現(xiàn)如下:

    其中?reflectionData()方法實(shí)現(xiàn)如下:

    這里有個(gè)比較重要的數(shù)據(jù)結(jié)構(gòu)?ReflectionData,用來緩存從JVM中讀取類的如下屬性數(shù)據(jù):

    從reflectionData()方法實(shí)現(xiàn)可以看出:reflectionData對象是SoftReference類型的,說明在內(nèi)存緊張時(shí)可能會被回收,不過也可以通過-XX:SoftRefLRUPolicyMSPerMB參數(shù)控制回收的時(shí)機(jī),只要發(fā)生GC就會將其回收,如果reflectionData被回收之后,又執(zhí)行了反射方法,那只能通過newReflectionData方法重新創(chuàng)建一個(gè)這樣的對象了,newReflectionData方法實(shí)現(xiàn)如下:

    通過unsafe.compareAndSwapObject方法重新設(shè)置reflectionData字段;

    在privateGetDeclaredMethods方法中,如果通過reflectionData()獲得的ReflectionData對象不為空,則嘗試從ReflectionData對象中獲取declaredMethods屬性,如果是第一次,或則被GC回收之后,重新初始化后的類屬性為空,則需要重新到JVM中獲取一次,并賦值給ReflectionData,下次調(diào)用就可以使用緩存數(shù)據(jù)了。

    Method 調(diào)用

    獲取到指定的方法對象Method之后,就可以調(diào)用它的invoke方法了,invoke實(shí)現(xiàn)如下:

    應(yīng)該注意到:這里的MethodAccessor對象是invoke方法實(shí)現(xiàn)的關(guān)鍵,一開始methodAccessor為空,需要調(diào)用acquireMethodAccessor生成一個(gè)新的MethodAccessor對象,MethodAccessor本身就是一個(gè)接口,實(shí)現(xiàn)如下:

    在acquireMethodAccessor方法中,會通過ReflectionFactory類的newMethodAccessor創(chuàng)建一個(gè)實(shí)現(xiàn)了MethodAccessor接口的對象,實(shí)現(xiàn)如下:

    在ReflectionFactory類中,有2個(gè)重要的字段:noInflation(默認(rèn)false)和inflationThreshold(默認(rèn)15),在checkInitted方法中可以通過-Dsun.reflect.inflationThreshold=xxx和-Dsun.reflect.noInflation=true對這兩個(gè)字段重新設(shè)置,而且只會設(shè)置一次;

    如果noInflation為false,方法newMethodAccessor都會返回DelegatingMethodAccessorImpl對象,DelegatingMethodAccessorImpl的類實(shí)現(xiàn)

    其實(shí),DelegatingMethodAccessorImpl對象就是一個(gè)代理對象,負(fù)責(zé)調(diào)用被代理對象delegate的invoke方法,其中delegate參數(shù)目前是NativeMethodAccessorImpl對象,所以最終Method的invoke方法調(diào)用的是NativeMethodAccessorImpl對象invoke方法,實(shí)現(xiàn)如下:

    這里用到了ReflectionFactory類中的inflationThreshold,當(dāng)delegate調(diào)用了15次invoke方法之后,如果繼續(xù)調(diào)用就通過MethodAccessorGenerator類的generateMethod方法生成MethodAccessorImpl對象,并設(shè)置為delegate對象,這樣下次執(zhí)行Method.invoke時(shí),就調(diào)用新建的MethodAccessor對象的invoke()方法了。

    這里需要注意的是:
    generateMethod方法在生成MethodAccessorImpl對象時(shí),會在內(nèi)存中生成對應(yīng)的字節(jié)碼,并調(diào)用ClassDefiner.defineClass創(chuàng)建對應(yīng)的class對象,實(shí)現(xiàn)如下:

    在ClassDefiner.defineClass方法實(shí)現(xiàn)中,每被調(diào)用一次都會生成一個(gè)DelegatingClassLoader類加載器對象

    這里每次都生成新的類加載器,是為了性能考慮,在某些情況下可以卸載這些生成的類,因?yàn)轭惖男遁d是只有在類加載器可以被回收的情況下才會被回收的,如果用了原來的類加載器,那可能導(dǎo)致這些新創(chuàng)建的類一直無法被卸載,從其設(shè)計(jì)來看本身就不希望這些類一直存在內(nèi)存里的,在需要的時(shí)候有就行了。

    Class類

    Class?代表類的實(shí)體,在運(yùn)行的 Java 應(yīng)用程序中表示 類 和 接口。在這個(gè)類中提供了很多有用的方法,這里只簡單的分類介紹下。

    獲取類相關(guān)的方法

    方法用途
    asSubclass(Class<U> clazz)把傳遞的類的對象轉(zhuǎn)換成代表其子類的對象
    Cast把對象轉(zhuǎn)換成代表類或是接口的對象
    getClassLoader()獲得類的加載器
    getClasses()返回一個(gè)數(shù)組,數(shù)組中包含該類中所有公共類和接口類的對象
    getDeclaredClasses()返回一個(gè)數(shù)組,數(shù)組中包含該類中所有類和接口類的對象
    forName(String className)根據(jù)類名返回類的對象
    getName()獲得類的完整路徑名字
    newInstance()創(chuàng)建類的實(shí)例
    getPackage()獲得類的包
    getSimpleName()獲得類的名字
    getSuperclass()獲得當(dāng)前類繼承的父類的名字
    getInterfaces()獲得當(dāng)前類實(shí)現(xiàn)的類或是接口

    獲取?類中屬性相關(guān)的方法

    方法用途
    getField(String name)獲得某個(gè)公有的屬性對象
    getFields()獲得所有公有的屬性對象
    getDeclaredField(String name)獲得某個(gè)屬性對象
    getDeclaredFields()獲得所有屬性對象

    獲取?類中注解相關(guān)的方法

    方法用途
    getAnnotation(Class<A> annotationClass)返回該類中與參數(shù)類型匹配的公有注解對象
    getAnnotations()返回該類所有的公有注解對象
    getDeclaredAnnotation(Class<A> annotationClass)返回該類中與參數(shù)類型匹配的所有注解對象
    getDeclaredAnnotations()返回該類所有的注解對象

    獲得?類中構(gòu)造器相關(guān)的方法

    方法用途
    getConstructor(Class...<?> parameterTypes)獲得該類中與參數(shù)類型匹配的公有構(gòu)造方法
    getConstructors()獲得該類的所有公有構(gòu)造方法
    getDeclaredConstructor(Class...<?> parameterTypes)獲得該類中與參數(shù)類型匹配的構(gòu)造方法
    getDeclaredConstructors()獲得該類所有構(gòu)造方法

    獲取?類中方法相關(guān)的方法

    方法用途
    getMethod(String name, Class...<?> parameterTypes)獲得該類某個(gè)公有的方法
    getMethods()獲得該類所有公有的方法
    getDeclaredMethod(String name, Class...<?> parameterTypes)獲得該類某個(gè)方法
    getDeclaredMethods()獲得該類所有方法

    類中 其他重要的方法

    方法用途
    isAnnotation()如果是注解類型則返回 true
    isAnnotationPresent(Class<? extends Annotation> annotationClass)如果是指定類型注解類型則返回 true
    isAnonymousClass()如果是匿名類則返回 true
    isArray()如果是一個(gè)數(shù)組類則返回 true
    isEnum()如果是枚舉類則返回 true
    isInstance(Object obj)如果obj是該類的實(shí)例則返回 true
    isInterface()如果是接口類則返回 true
    isLocalClass()如果是局部類則返回 true
    isMemberClass()如果是內(nèi)部類則返回 true

    Field 類

    Field?代表 成員變量成員變量也稱為類的屬性)。

    方法用途
    equals(Object obj)屬性與 obj 相等則返回 true
    get(Object obj)獲得 obj 中對應(yīng)的屬性值
    set(Object obj, Object value)設(shè)置 obj 中對應(yīng)屬性值

    Method 類

    Method?代表 類的方法

    方法用途
    invoke(Object obj, Object... args)傳遞 object 對象及參數(shù)調(diào)用該對象對應(yīng)的方法

    Constructor類

    Constructor?代表?類的構(gòu)造方法

    方法用途
    newInstance(Object... initargs)根據(jù)傳遞的參數(shù)創(chuàng)建類的對象

    示例 1:演示反射的使用

    為了演示反射的使用,首先構(gòu)造一個(gè)與書籍相關(guān)的 model ---?Book.java,然后通過反射方法示例創(chuàng)建對象、反射私有構(gòu)造方法、反射私有屬性、反射私有方法,最后給出兩個(gè)比較復(fù)雜的反射示例 ---?獲得當(dāng)前 ZenMode 和 關(guān)機(jī)Shutdown。

    被反射類 Book.java

    public class Book{private final static String TAG = "BookTag";private String name;private String author;@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +'}';}public Book() {}private Book(String name, String author) {this.name = name;this.author = author;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}private String declaredMethod(int index) {String string = null;switch (index) {case 0:string = "I am declaredMethod 1 !";break;case 1:string = "I am declaredMethod 2 !";break;default:string = "I am declaredMethod 1 !";}return string;} }

    反射邏輯封裝在 ReflectClass.java

    public class ReflectClass {private final static String TAG = "peter.log.ReflectClass";// 創(chuàng)建對象public static void reflectNewInstance() {try {Class<?> classBook = Class.forName("com.android.peter.reflectdemo.Book");Object objectBook = classBook.newInstance();Book book = (Book) objectBook;book.setName("Android進(jìn)階之光");book.setAuthor("劉望舒");Log.d(TAG,"reflectNewInstance book = " + book.toString());} catch (Exception ex) {ex.printStackTrace();}}// 反射私有的構(gòu)造方法public static void reflectPrivateConstructor() {try {Class<?> classBook = Class.forName("com.android.peter.reflectdemo.Book");Constructor<?> declaredConstructorBook = classBook.getDeclaredConstructor(String.class,String.class);declaredConstructorBook.setAccessible(true);Object objectBook = declaredConstructorBook.newInstance("Android開發(fā)藝術(shù)探索","任玉剛");Book book = (Book) objectBook;Log.d(TAG,"reflectPrivateConstructor book = " + book.toString());} catch (Exception ex) {ex.printStackTrace();}}// 反射私有屬性public static void reflectPrivateField() {try {Class<?> classBook = Class.forName("com.android.peter.reflectdemo.Book");Object objectBook = classBook.newInstance();Field fieldTag = classBook.getDeclaredField("TAG");fieldTag.setAccessible(true);String tag = (String) fieldTag.get(objectBook);Log.d(TAG,"reflectPrivateField tag = " + tag);} catch (Exception ex) {ex.printStackTrace();}}// 反射私有方法public static void reflectPrivateMethod() {try {Class<?> classBook = Class.forName("com.android.peter.reflectdemo.Book");Method methodBook = classBook.getDeclaredMethod("declaredMethod",int.class);methodBook.setAccessible(true);Object objectBook = classBook.newInstance();String string = (String) methodBook.invoke(objectBook,0);Log.d(TAG,"reflectPrivateMethod string = " + string);} catch (Exception ex) {ex.printStackTrace();}}// 獲得系統(tǒng)Zenmode值public static int getZenMode() {int zenMode = -1;try {Class<?> cServiceManager = Class.forName("android.os.ServiceManager");Method mGetService = cServiceManager.getMethod("getService", String.class);Object oNotificationManagerService = mGetService.invoke(null, Context.NOTIFICATION_SERVICE);Class<?> cINotificationManagerStub = Class.forName("android.app.INotificationManager$Stub");Method mAsInterface = cINotificationManagerStub.getMethod("asInterface",IBinder.class);Object oINotificationManager = mAsInterface.invoke(null,oNotificationManagerService);Method mGetZenMode = cINotificationManagerStub.getMethod("getZenMode");zenMode = (int) mGetZenMode.invoke(oINotificationManager);} catch (Exception ex) {ex.printStackTrace();}return zenMode;}// 關(guān)閉手機(jī)public static void shutDown() {try {Class<?> cServiceManager = Class.forName("android.os.ServiceManager");Method mGetService = cServiceManager.getMethod("getService",String.class);Object oPowerManagerService = mGetService.invoke(null,Context.POWER_SERVICE);Class<?> cIPowerManagerStub = Class.forName("android.os.IPowerManager$Stub");Method mShutdown = cIPowerManagerStub.getMethod("shutdown",boolean.class,String.class,boolean.class);Method mAsInterface = cIPowerManagerStub.getMethod("asInterface",IBinder.class);Object oIPowerManager = mAsInterface.invoke(null,oPowerManagerService);mShutdown.invoke(oIPowerManager,true,null,true);} catch (Exception ex) {ex.printStackTrace();}}public static void shutdownOrReboot(final boolean shutdown, final boolean confirm) {try {Class<?> ServiceManager = Class.forName("android.os.ServiceManager");// 獲得ServiceManager的getService方法Method getService = ServiceManager.getMethod("getService", java.lang.String.class);// 調(diào)用getService獲取RemoteServiceObject oRemoteService = getService.invoke(null, Context.POWER_SERVICE);// 獲得IPowerManager.Stub類Class<?> cStub = Class.forName("android.os.IPowerManager$Stub");// 獲得asInterface方法Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class);// 調(diào)用asInterface方法獲取IPowerManager對象Object oIPowerManager = asInterface.invoke(null, oRemoteService);if (shutdown) {// 獲得shutdown()方法Method shutdownMethod = oIPowerManager.getClass().getMethod("shutdown", boolean.class, String.class, boolean.class);// 調(diào)用shutdown()方法shutdownMethod.invoke(oIPowerManager, confirm, null, false);} else {// 獲得reboot()方法Method rebootMethod = oIPowerManager.getClass().getMethod("reboot",boolean.class, String.class, boolean.class);// 調(diào)用reboot()方法rebootMethod.invoke(oIPowerManager, confirm, null, false);}} catch (Exception e) {e.printStackTrace();}} }

    調(diào)用相應(yīng)反射邏輯方法

    try {// 創(chuàng)建對象ReflectClass.reflectNewInstance();// 反射私有的構(gòu)造方法ReflectClass.reflectPrivateConstructor();// 反射私有屬性ReflectClass.reflectPrivateField();// 反射私有方法ReflectClass.reflectPrivateMethod();} catch (Exception ex) {ex.printStackTrace();}Log.d(TAG," zenmode = " + ReflectClass.getZenMode());

    Log 輸出結(jié)果如下:

    08-27 15:11:37.999 11987-11987/com.android.peter.reflectdemo D/peter.log.ReflectClass: reflectNewInstance book = Book{name='Android進(jìn)階之光', author='劉望舒'} 08-27 15:11:38.000 11987-11987/com.android.peter.reflectdemo D/peter.log.ReflectClass: reflectPrivateConstructor book = Book{name='Android開發(fā)藝術(shù)探索', author='任玉剛'} 08-27 15:11:38.000 11987-11987/com.android.peter.reflectdemo D/peter.log.ReflectClass: reflectPrivateField tag = BookTag 08-27 15:11:38.000 11987-11987/com.android.peter.reflectdemo D/peter.log.ReflectClass: reflectPrivateMethod string = I am declaredMethod 1 ! 08-27 15:11:38.004 11987-11987/com.android.peter.reflectdemo D/peter.log.ReflectDemo: zenmode = 0

    示例 2:關(guān)于反射的用法舉例

    ??反射非常強(qiáng)大,但是從上面的記錄來看,反而覺得還不如直接調(diào)用方法來的直接和方便2。

    ??通常來說,需要在學(xué)習(xí)了Spring 的依賴注入,反轉(zhuǎn)控制之后,才會對反射有更好的理解,所以先這里舉兩個(gè)例子,來演示一下反射的一種實(shí)際運(yùn)用3。

    1、通過反射運(yùn)行配置文件內(nèi)容

    1. 首先準(zhǔn)備兩個(gè)業(yè)務(wù)類

    package service; public class Service1 {public void doService1(){System.out.println("業(yè)務(wù)方法1");} } package service; public class Service2 {public void doService2(){System.out.println("業(yè)務(wù)方法2");} }

    2. 當(dāng)需要從第一個(gè)業(yè)務(wù)方法切換到第二個(gè)業(yè)務(wù)方法的時(shí)候,使用非反射方式,必須修改代碼,并且重新編譯運(yùn)行,才可以達(dá)到效果

    package service; public class CommonTest {public static void main(String[] args) {//new Service1().doService1();//必須重新修改代碼new Service2().doService2();} }

    3. 使用反射方式則方便很多

  • 首先準(zhǔn)備一個(gè)配置文件,就叫做spring.txt吧, 放在src目錄下。
    里面存放的是類的名稱,和要調(diào)用的方法名。首先準(zhǔn)備一個(gè)配置文件,就叫做spring.txt吧, 放在src目錄下。里面存放的是類的名稱,和要調(diào)用的方法名。
  • 在測試類Test中,首先取出類名稱和方法名,然后通過反射去調(diào)用這個(gè)方法。
  • 當(dāng)需要從調(diào)用第一個(gè)業(yè)務(wù)方法,切換到調(diào)用第二個(gè)業(yè)務(wù)方法的時(shí)候,不需要修改一行代碼,也不需要重新編譯,只需要修改配置文件spring.txt,再運(yùn)行即可。
  • 示例:spring.txt 內(nèi)容

    class=reflection.Service1 method=doService1

    測試類

    package service;public class ReflectTest {@SuppressWarnings({"rawtypes", "unchecked"})public static void main(String[] args) throws Exception {//從spring.txt中獲取類名稱和方法名稱File springConfigFile = new File("H:\\eclpise-workspace\\reflect-demo\\src\\spring.txt");Properties springConfig = new Properties();springConfig.load(new FileInputStream(springConfigFile));String className = (String) springConfig.get("class");String methodName = (String) springConfig.get("method");//根據(jù)類名稱獲取類對象Class clazz = Class.forName(className);//根據(jù)方法名稱,獲取方法對象Method m = clazz.getMethod(methodName);//獲取構(gòu)造器Constructor c = clazz.getConstructor();//根據(jù)構(gòu)造器,實(shí)例化出對象Object service = c.newInstance();//調(diào)用對象的指定方法m.invoke(service);} }

    示例 2:

    student 類:

    public class Student {public void show() {System.out.println("is show()");} }

    配置文件以txt文件為例子(pro.txt):

    className = cn.fanshe.Student methodName = show

    測試類:

    import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.lang.reflect.Method; import java.util.Properties;/** 我們利用反射和配置文件,可以使:應(yīng)用程序更新時(shí),對源碼無需進(jìn)行任何修改* 我們只需要將新類發(fā)送給客戶端,并修改配置文件即可*/ public class Demo {public static void main(String[] args) throws Exception {//通過反射獲取Class對象Class stuClass = Class.forName(getValue("className"));//"cn.fanshe.Student"//2獲取show()方法Method m = stuClass.getMethod(getValue("methodName"));//show//3.調(diào)用show()方法m.invoke(stuClass.getConstructor().newInstance());}//此方法接收一個(gè)key,在配置文件中獲取相應(yīng)的valuepublic static String getValue(String key) throws IOException {Properties pro = new Properties();//獲取配置文件的對象FileReader in = new FileReader("pro.txt");//獲取輸入流pro.load(in);//將流加載到配置文件對象中in.close();return pro.getProperty(key);//返回根據(jù)key獲取的value值} }

    控制臺輸出:is show()

    需求:當(dāng)我們升級這個(gè)系統(tǒng)時(shí),不要 Student 類,而需要新寫一個(gè) Student2 的類時(shí),這時(shí)只需要更改 pro.txt 的文件內(nèi)容就可以了。代碼就一點(diǎn)不用改動

    要替換的 student2類:

    public class Student2 {public void show2() {System.out.println("is show2()");} }

    配置文件更改為:

    className = cn.fanshe.Student2 methodName = show2

    控制臺輸出:is show2();

    2:通過反射越過泛型檢查

    ??泛型是在編譯期間起作用的。在編譯后的.class文件中是沒有泛型的。所有比如T或者E類型啊,本質(zhì)都是通過Object處理的。所以可以通過使用反射來越過泛型。

    示例:

    package test;public class GenericityTest {public static void main(String[] args) throws Exception {ArrayList<String> list = new ArrayList<>();list.add("this");list.add("is");// strList.add(5);報(bào)錯/********** 越過泛型檢查 **************///獲取ArrayList的Class對象,反向的調(diào)用add()方法,添加數(shù)據(jù)Class listClass = list.getClass();//獲取add()方法Method m = listClass.getMethod("add", Object.class);//調(diào)用add()方法m.invoke(list, 5);//遍歷集合for (Object obj : list) {System.out.println(obj);}} }

    示例 2:

    泛型用在編譯期,編譯過后泛型擦除(消失掉)。所以是可以通過反射越過泛型檢查的

    測試類:

    import java.lang.reflect.Method; import java.util.ArrayList;/** 通過反射越過泛型檢查** 例如:有一個(gè)String泛型的集合,怎樣能向這個(gè)集合中添加一個(gè)Integer類型的值?*/ public class Demo {public static void main(String[] args) throws Exception {ArrayList<String> strList = new ArrayList<>();strList.add("aaa");strList.add("bbb");// strList.add(100);// 獲取ArrayList的Class對象,反向的調(diào)用add()方法,添加數(shù)據(jù)Class listClass = strList.getClass(); //得到 strList 對象的字節(jié)碼 對象// 獲取add()方法Method m = listClass.getMethod("add", Object.class);// 調(diào)用add()方法m.invoke(strList, 100);// 遍歷集合for (Object obj : strList) {System.out.println(obj);}} }

    控制臺輸出:
    aaa
    bbb
    100

    總結(jié)

    本文列舉了反射機(jī)制使用過程中常用的、重要的一些類及其方法,更多信息和用法需要近一步的閱讀 Google 提供的相關(guān)文檔和示例。

    在閱讀 Class類 文檔時(shí)發(fā)現(xiàn)一個(gè)特點(diǎn),以通過反射獲得 Method 對象為例,一般會提供四種方法,

    • getMethod(parameterTypes)? ? ? ? ? ? ? ? ? ? ? ?// 獲取某個(gè)公有的方法的對象,
    • getMethods()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 獲取該類所有公有的方法。
    • getDeclaredMethod(parameterTypes)? ? ? ? // 獲取該類某個(gè)方法。
    • getDeclaredMethods()。? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 獲取該類所有方法。

    帶有 Declared 修飾的方法可以反射到私有的方法沒有Declared修飾的只能用來反射公有的方法其他的 Annotation、Field、Constructor 也是如此。

    在 ReflectClass類中還提供了兩種反射 PowerManager.shutdown() 的方法,在調(diào)用的時(shí)候會輸出如下 log,提示沒有相關(guān)權(quán)限。之前在項(xiàng)目中嘗試反射其他方法的時(shí)候還遇到過有權(quán)限和沒權(quán)限返回的值不一樣的情況。如果源碼中明確進(jìn)行了權(quán)限驗(yàn)證,而你的應(yīng)用又無法獲得這個(gè)權(quán)限的話,建議就不要浪費(fèi)時(shí)間反射了。

    W/System.err: java.lang.reflect.InvocationTargetExceptionW/System.err: at java.lang.reflect.Method.invoke(Native Method)W/System.err: at .ReflectClass.shutDown(ReflectClass.java:104)W/System.err: at .MainActivity$1.onClick(MainActivity.java:25)W/System.err: at android.view.View.performClick(View.java:6259)W/System.err: at android.view.View$PerformClick.run(View.java:24732)W/System.err: at android.os.Handler.handleCallback(Handler.java:789)W/System.err: at android.os.Handler.dispatchMessage(Handler.java:98)W/System.err: at android.os.Looper.loop(Looper.java:164)W/System.err: at android.app.ActivityThread.main(ActivityThread.java:6592)W/System.err: at java.lang.reflect.Method.invoke(Native Method)W/System.err: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)W/System.err: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)W/System.err: Caused by: java.lang.SecurityException: Neither user 10224 nor current process has android.permission.REBOOT.W/System.err: at android.os.Parcel.readException(Parcel.java:1942)W/System.err: at android.os.Parcel.readException(Parcel.java:1888)W/System.err: at android.os.IPowerManager$Stub$Proxy.shutdown(IPowerManager.java:787)W/System.err: ... 12 more

    ReflectDemo:https://gitee.com/peter_RD_nj/DemoAllInOne/tree/master/ReflectDemo

    參考文獻(xiàn)

    敬業(yè)的小碼哥? ??How2jJava

    認(rèn)識反射機(jī)制(Reflection)
    Java 反射機(jī)制
    一個(gè)例子讓你了解Java反射機(jī)制
    Java反射機(jī)制的原理及在Android下的簡單應(yīng)用
    java中的反射機(jī)制
    Android注解與反射機(jī)制
    java.lang.reflect.Method


    ?

    總結(jié)

    以上是生活随笔為你收集整理的Java 高级特性 --- 反射的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    成人亚洲精品久久久久 | 欧美日韩视频无码一区二区三 | 欧美刺激性大交 | 学生妹亚洲一区二区 | 中文字幕日韩精品一区二区三区 | 亚洲色欲色欲天天天www | 乌克兰少妇xxxx做受 | 日本一卡二卡不卡视频查询 | 国内精品人妻无码久久久影院蜜桃 | 人妻少妇精品无码专区动漫 | 国产黄在线观看免费观看不卡 | 国产精品无套呻吟在线 | 蜜桃视频韩日免费播放 | 国内老熟妇对白xxxxhd | 亚洲人成网站免费播放 | 久久99精品国产麻豆 | 四虎国产精品免费久久 | 国产精品人妻一区二区三区四 | 99久久久无码国产精品免费 | 人妻少妇精品无码专区动漫 | 欧美zoozzooz性欧美 | 99精品无人区乱码1区2区3区 | 久久五月精品中文字幕 | 亚洲精品久久久久中文第一幕 | 久久亚洲精品中文字幕无男同 | 久久综合色之久久综合 | 国产深夜福利视频在线 | 人人妻人人澡人人爽精品欧美 | 2019午夜福利不卡片在线 | 日日干夜夜干 | 久久熟妇人妻午夜寂寞影院 | 成在人线av无码免观看麻豆 | 中文字幕乱码人妻二区三区 | 亚洲日韩一区二区 | 色婷婷香蕉在线一区二区 | 人人妻人人澡人人爽人人精品浪潮 | 男女性色大片免费网站 | 国产成人无码午夜视频在线观看 | 国产人妻精品午夜福利免费 | 国产乱人伦偷精品视频 | www一区二区www免费 | 免费人成网站视频在线观看 | 国産精品久久久久久久 | 精品国产成人一区二区三区 | 99国产精品白浆在线观看免费 | 亚洲另类伦春色综合小说 | 一区二区三区高清视频一 | 丰满妇女强制高潮18xxxx | 国产偷国产偷精品高清尤物 | 精品无码成人片一区二区98 | 老熟女乱子伦 | 精品乱子伦一区二区三区 | 午夜精品一区二区三区的区别 | 99riav国产精品视频 | 99国产欧美久久久精品 | 狂野欧美性猛xxxx乱大交 | 日本精品少妇一区二区三区 | 乌克兰少妇性做爰 | 亚洲精品国产品国语在线观看 | 2020最新国产自产精品 | 无码吃奶揉捏奶头高潮视频 | 久久这里只有精品视频9 | 暴力强奷在线播放无码 | 国产色视频一区二区三区 | 熟女少妇在线视频播放 | 欧美激情一区二区三区成人 | 麻豆成人精品国产免费 | 一个人看的视频www在线 | 一本无码人妻在中文字幕免费 | 欧美日本免费一区二区三区 | 欧美zoozzooz性欧美 | 97夜夜澡人人爽人人喊中国片 | 亚洲s码欧洲m码国产av | 精品成在人线av无码免费看 | 又黄又爽又色的视频 | 国产无遮挡吃胸膜奶免费看 | 丝袜足控一区二区三区 | 色婷婷av一区二区三区之红樱桃 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产美女精品一区二区三区 | 免费无码午夜福利片69 | 激情综合激情五月俺也去 | 日日躁夜夜躁狠狠躁 | 久久五月精品中文字幕 | 亚洲第一网站男人都懂 | 最新版天堂资源中文官网 | 日韩视频 中文字幕 视频一区 | 妺妺窝人体色www在线小说 | 久久综合给合久久狠狠狠97色 | 欧美老妇交乱视频在线观看 | 午夜时刻免费入口 | 婷婷六月久久综合丁香 | 偷窥村妇洗澡毛毛多 | 亚洲国产一区二区三区在线观看 | 成人精品一区二区三区中文字幕 | 爽爽影院免费观看 | 大乳丰满人妻中文字幕日本 | 亚洲无人区一区二区三区 | www国产精品内射老师 | 无码吃奶揉捏奶头高潮视频 | 最新国产麻豆aⅴ精品无码 | 少妇邻居内射在线 | 国产高清av在线播放 | 亚洲s色大片在线观看 | 国产精品无码一区二区三区不卡 | 亚洲国产精品成人久久蜜臀 | 天天做天天爱天天爽综合网 | 精品熟女少妇av免费观看 | 国产农村乱对白刺激视频 | 亚洲色偷偷男人的天堂 | av小次郎收藏 | 色婷婷综合激情综在线播放 | 国产精品亚洲综合色区韩国 | 国产小呦泬泬99精品 | 麻豆国产人妻欲求不满谁演的 | 日本一卡2卡3卡四卡精品网站 | 成人影院yy111111在线观看 | 在线播放免费人成毛片乱码 | 亚洲乱码中文字幕在线 | 狠狠色噜噜狠狠狠狠7777米奇 | 男人的天堂av网站 | 日本护士毛茸茸高潮 | 天堂亚洲2017在线观看 | 国内揄拍国内精品人妻 | 午夜肉伦伦影院 | 国产成人精品视频ⅴa片软件竹菊 | 欧美日韩一区二区综合 | 亚洲春色在线视频 | 成在人线av无码免观看麻豆 | 精品 日韩 国产 欧美 视频 | 国产日产欧产精品精品app | 97久久超碰中文字幕 | 老司机亚洲精品影院无码 | 国产明星裸体无码xxxx视频 | 亚洲啪av永久无码精品放毛片 | 乌克兰少妇xxxx做受 | 国产婷婷色一区二区三区在线 | 乌克兰少妇性做爰 | 亚洲精品一区国产 | 欧美成人午夜精品久久久 | 免费中文字幕日韩欧美 | 午夜性刺激在线视频免费 | 亚洲色大成网站www | 久久亚洲中文字幕精品一区 | 国产农村妇女高潮大叫 | 国产精品久久久久久亚洲毛片 | 久久久成人毛片无码 | 国产极品美女高潮无套在线观看 | 亚洲日本一区二区三区在线 | 日韩无套无码精品 | 熟妇人妻中文av无码 | 少妇激情av一区二区 | 日韩欧美中文字幕在线三区 | 国产精品无码mv在线观看 | 国产免费观看黄av片 | 国产成人综合色在线观看网站 | 亚洲精品久久久久久久久久久 | 又黄又爽又色的视频 | 少妇一晚三次一区二区三区 | 十八禁视频网站在线观看 | 欧美国产亚洲日韩在线二区 | 亚洲午夜久久久影院 | 女人色极品影院 | 一本色道久久综合亚洲精品不卡 | 性做久久久久久久免费看 | 人妻体内射精一区二区三四 | 无码av中文字幕免费放 | 亚洲伊人久久精品影院 | 少妇无套内谢久久久久 | 欧美人与动性行为视频 | 久久亚洲a片com人成 | 欧美人与物videos另类 | 久久久精品人妻久久影视 | 国产成人无码av在线影院 | 久久久无码中文字幕久... | 88国产精品欧美一区二区三区 | 久久aⅴ免费观看 | 中文字幕无线码免费人妻 | 国内揄拍国内精品人妻 | 国内少妇偷人精品视频免费 | 国产香蕉尹人综合在线观看 | 国内少妇偷人精品视频 | 国产黄在线观看免费观看不卡 | 色婷婷av一区二区三区之红樱桃 | 小泽玛莉亚一区二区视频在线 | 一个人看的视频www在线 | 国产精品久久国产三级国 | 三上悠亚人妻中文字幕在线 | 亚洲最大成人网站 | 一本加勒比波多野结衣 | 国产精品怡红院永久免费 | 无码一区二区三区在线 | 国产熟妇高潮叫床视频播放 | 日本va欧美va欧美va精品 | 99麻豆久久久国产精品免费 | 国产亚洲视频中文字幕97精品 | 亚洲呦女专区 | 77777熟女视频在线观看 а天堂中文在线官网 | a片在线免费观看 | 51国偷自产一区二区三区 | 双乳奶水饱满少妇呻吟 | www国产精品内射老师 | 亚洲人成影院在线观看 | 蜜臀aⅴ国产精品久久久国产老师 | 成在人线av无码免观看麻豆 | 欧美 日韩 亚洲 在线 | 领导边摸边吃奶边做爽在线观看 | 亚洲综合色区中文字幕 | 性生交大片免费看l | 亚洲精品国产第一综合99久久 | 5858s亚洲色大成网站www | 人妻熟女一区 | 久热国产vs视频在线观看 | 国产超级va在线观看视频 | 精品国产一区二区三区四区在线看 | 一本色道婷婷久久欧美 | 蜜臀aⅴ国产精品久久久国产老师 | 在线播放无码字幕亚洲 | 国产成人人人97超碰超爽8 | 亚洲国产精品一区二区美利坚 | 久久精品中文字幕一区 | 台湾无码一区二区 | 日韩欧美中文字幕公布 | 日本精品人妻无码免费大全 | 曰韩少妇内射免费播放 | 国产成人精品一区二区在线小狼 | 又大又硬又黄的免费视频 | 一个人看的www免费视频在线观看 | 国产乱人伦偷精品视频 | 东北女人啪啪对白 | 日本一卡2卡3卡四卡精品网站 | 久久精品人妻少妇一区二区三区 | a片免费视频在线观看 | 76少妇精品导航 | 99麻豆久久久国产精品免费 | 国产精品久久久久久亚洲影视内衣 | 300部国产真实乱 | ass日本丰满熟妇pics | 日本精品人妻无码77777 天堂一区人妻无码 | 狠狠色丁香久久婷婷综合五月 | 久久午夜无码鲁丝片午夜精品 | 国产精品无码mv在线观看 | 精品无人区无码乱码毛片国产 | 天下第一社区视频www日本 | 99国产精品白浆在线观看免费 | 特级做a爰片毛片免费69 | 亚洲伊人久久精品影院 | 久久久婷婷五月亚洲97号色 | 免费看少妇作爱视频 | 欧美色就是色 | 一区二区三区乱码在线 | 欧洲 | 亚洲色成人中文字幕网站 | 亚洲色www成人永久网址 | 性史性农村dvd毛片 | 人人澡人人妻人人爽人人蜜桃 | 亚洲精品一区二区三区在线 | 欧美兽交xxxx×视频 | 人妻少妇被猛烈进入中文字幕 | 国产精品成人av在线观看 | 夜夜躁日日躁狠狠久久av | 午夜男女很黄的视频 | 日日碰狠狠丁香久燥 | 蜜桃臀无码内射一区二区三区 | 少女韩国电视剧在线观看完整 | 国产成人综合在线女婷五月99播放 | 大地资源中文第3页 | 人妻少妇精品视频专区 | 中国女人内谢69xxxxxa片 | 国产精品怡红院永久免费 | 亚洲精品国偷拍自产在线麻豆 | 九九久久精品国产免费看小说 | 国产后入清纯学生妹 | 无遮挡国产高潮视频免费观看 | 女人被男人爽到呻吟的视频 | 黑人巨大精品欧美黑寡妇 | 国产精品国产三级国产专播 | 18无码粉嫩小泬无套在线观看 | 欧美性生交xxxxx久久久 | 亚洲一区二区三区四区 | 国产精品a成v人在线播放 | 99久久精品国产一区二区蜜芽 | 国精品人妻无码一区二区三区蜜柚 | 色窝窝无码一区二区三区色欲 | 无码一区二区三区在线观看 | 亚洲精品一区二区三区在线观看 | 精品久久8x国产免费观看 | 国产特级毛片aaaaaa高潮流水 | 国产av无码专区亚洲a∨毛片 | 亚洲va欧美va天堂v国产综合 | 国产在线一区二区三区四区五区 | 无码人妻丰满熟妇区五十路百度 | 亚洲熟妇色xxxxx欧美老妇y | 国产午夜精品一区二区三区嫩草 | 国产亲子乱弄免费视频 | 人人妻人人澡人人爽人人精品浪潮 | 女人被爽到呻吟gif动态图视看 | 亚洲精品午夜国产va久久成人 | 老头边吃奶边弄进去呻吟 | 国产熟妇高潮叫床视频播放 | 精品一二三区久久aaa片 | av在线亚洲欧洲日产一区二区 | 狠狠色色综合网站 | 7777奇米四色成人眼影 | 久久综合久久自在自线精品自 | 丝袜人妻一区二区三区 | 九月婷婷人人澡人人添人人爽 | 亚洲の无码国产の无码影院 | 久久久久久av无码免费看大片 | 国内丰满熟女出轨videos | 日韩亚洲欧美精品综合 | 无码中文字幕色专区 | 亚洲国产精品毛片av不卡在线 | 野外少妇愉情中文字幕 | 亚洲精品鲁一鲁一区二区三区 | 久久亚洲精品成人无码 | 日日天日日夜日日摸 | 人人妻人人澡人人爽欧美一区九九 | 国产亚洲精品久久久久久久 | 青青青手机频在线观看 | 国内精品久久毛片一区二区 | 亚洲中文字幕av在天堂 | 国产精品99久久精品爆乳 | 久久精品人妻少妇一区二区三区 | 人妻人人添人妻人人爱 | 丰满岳乱妇在线观看中字无码 | 国产精品18久久久久久麻辣 | 曰本女人与公拘交酡免费视频 | 亚洲精品鲁一鲁一区二区三区 | 欧美人与物videos另类 | 日韩精品成人一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 国产莉萝无码av在线播放 | 亚洲国产精品一区二区第一页 | 久久99国产综合精品 | 欧美性生交xxxxx久久久 | 久久久精品国产sm最大网站 | 麻豆蜜桃av蜜臀av色欲av | 2020久久超碰国产精品最新 | 亚洲狠狠婷婷综合久久 | 麻豆蜜桃av蜜臀av色欲av | 国产人妻人伦精品 | 天天摸天天碰天天添 | 国产乱码精品一品二品 | 人妻尝试又大又粗久久 | 无码人妻少妇伦在线电影 | 强辱丰满人妻hd中文字幕 | 狠狠躁日日躁夜夜躁2020 | 精品无码国产自产拍在线观看蜜 | 国内少妇偷人精品视频 | 麻豆蜜桃av蜜臀av色欲av | 大胆欧美熟妇xx | 午夜不卡av免费 一本久久a久久精品vr综合 | 日韩精品无码一本二本三本色 | 曰韩少妇内射免费播放 | 久久久久亚洲精品男人的天堂 | 又大又紧又粉嫩18p少妇 | 夜精品a片一区二区三区无码白浆 | 国内丰满熟女出轨videos | 亚洲成av人在线观看网址 | 正在播放东北夫妻内射 | 国产午夜视频在线观看 | 少妇一晚三次一区二区三区 | av无码电影一区二区三区 | 给我免费的视频在线观看 | 牲欲强的熟妇农村老妇女 | 99国产精品白浆在线观看免费 | 亚洲欧美国产精品久久 | 风流少妇按摩来高潮 | 小泽玛莉亚一区二区视频在线 | 三上悠亚人妻中文字幕在线 | 久久久久久av无码免费看大片 | 成人性做爰aaa片免费看 | 久久久久久久久蜜桃 | 亚洲国产综合无码一区 | 无码人妻丰满熟妇区五十路百度 | 久久久精品成人免费观看 | 国产在热线精品视频 | 久久精品成人欧美大片 | 国产亚洲精品久久久久久国模美 | 中文精品无码中文字幕无码专区 | 国内精品人妻无码久久久影院 | 又湿又紧又大又爽a视频国产 | 精品久久久无码中文字幕 | 久久97精品久久久久久久不卡 | 一本精品99久久精品77 | www国产亚洲精品久久网站 | 国内少妇偷人精品视频 | 成人免费视频视频在线观看 免费 | 麻豆成人精品国产免费 | 亚洲中文字幕在线观看 | 兔费看少妇性l交大片免费 | 波多野结衣av在线观看 | 精品无码国产自产拍在线观看蜜 | 国产精品久久久av久久久 | 日日噜噜噜噜夜夜爽亚洲精品 | 日韩精品久久久肉伦网站 | 18无码粉嫩小泬无套在线观看 | 久久久中文久久久无码 | а√天堂www在线天堂小说 | 色综合久久88色综合天天 | 少妇无码av无码专区在线观看 | 欧美日韩色另类综合 | 亚洲国产一区二区三区在线观看 | 国产精品久久国产精品99 | 亚洲国产精品一区二区第一页 | 性色av无码免费一区二区三区 | 激情人妻另类人妻伦 | 少妇无码av无码专区在线观看 | 国产尤物精品视频 | 又粗又大又硬毛片免费看 | 久久无码专区国产精品s | 午夜时刻免费入口 | 亚洲综合另类小说色区 | 丰满少妇人妻久久久久久 | 撕开奶罩揉吮奶头视频 | 台湾无码一区二区 | 一本大道久久东京热无码av | 精品 日韩 国产 欧美 视频 | 久久综合狠狠综合久久综合88 | 我要看www免费看插插视频 | 久久久久久久久蜜桃 | 大屁股大乳丰满人妻 | 18无码粉嫩小泬无套在线观看 | 国产精品久免费的黄网站 | 国产亚洲精品久久久久久 | 亚洲日韩精品欧美一区二区 | 四虎影视成人永久免费观看视频 | 欧美35页视频在线观看 | 日本熟妇人妻xxxxx人hd | 欧美熟妇另类久久久久久多毛 | 国产特级毛片aaaaaaa高清 | 97人妻精品一区二区三区 | 国产熟妇高潮叫床视频播放 | 夜先锋av资源网站 | 秋霞特色aa大片 | 久久国内精品自在自线 | 少妇厨房愉情理9仑片视频 | 午夜福利不卡在线视频 | 高潮喷水的毛片 | 人人妻人人藻人人爽欧美一区 | 久久无码人妻影院 | 成人影院yy111111在线观看 | 成人精品视频一区二区 | 国产9 9在线 | 中文 | 98国产精品综合一区二区三区 | 日本乱人伦片中文三区 | 亚洲精品成人av在线 | 妺妺窝人体色www婷婷 | 亚洲中文无码av永久不收费 | 精品成在人线av无码免费看 | 老子影院午夜精品无码 | 成人综合网亚洲伊人 | 人人爽人人澡人人人妻 | 欧美人妻一区二区三区 | 日韩精品乱码av一区二区 | 综合激情五月综合激情五月激情1 | 天天拍夜夜添久久精品 | 亚洲精品www久久久 | 久久久久久av无码免费看大片 | 思思久久99热只有频精品66 | 国产精品久久久久久亚洲毛片 | 51国偷自产一区二区三区 | 国产乱码精品一品二品 | 奇米影视7777久久精品人人爽 | 99久久久无码国产精品免费 | 日本一卡二卡不卡视频查询 | 无遮挡啪啪摇乳动态图 | 大肉大捧一进一出好爽视频 | 中文字幕无码人妻少妇免费 | 无码人妻少妇伦在线电影 | 国产 浪潮av性色四虎 | 熟妇人妻无码xxx视频 | 国产69精品久久久久app下载 | 婷婷丁香六月激情综合啪 | 波多野结衣乳巨码无在线观看 | 国产人妻人伦精品1国产丝袜 | 国产精品va在线播放 | 成人无码精品一区二区三区 | 久久久久久av无码免费看大片 | 377p欧洲日本亚洲大胆 | 欧美黑人性暴力猛交喷水 | 狠狠cao日日穞夜夜穞av | 亚洲成a人片在线观看日本 | 少妇人妻偷人精品无码视频 | 女高中生第一次破苞av | 日韩精品久久久肉伦网站 | 国产成人无码一二三区视频 | av无码电影一区二区三区 | 成在人线av无码免观看麻豆 | 一本精品99久久精品77 | 天堂亚洲2017在线观看 | 牲欲强的熟妇农村老妇女视频 | 午夜精品一区二区三区在线观看 | 国产精华av午夜在线观看 | 综合网日日天干夜夜久久 | 国产高潮视频在线观看 | 国产精品久久久久影院嫩草 | 色诱久久久久综合网ywww | 小泽玛莉亚一区二区视频在线 | 色综合视频一区二区三区 | 日本又色又爽又黄的a片18禁 | 国产亚洲人成a在线v网站 | 亚洲精品久久久久久一区二区 | 国产成人综合色在线观看网站 | 又黄又爽又色的视频 | 亚洲中文字幕在线无码一区二区 | 日韩精品a片一区二区三区妖精 | 欧美精品一区二区精品久久 | 久久精品国产大片免费观看 | 日本一区二区三区免费播放 | 狠狠色噜噜狠狠狠狠7777米奇 | 中文字幕人妻无码一夲道 | 成熟女人特级毛片www免费 | 性啪啪chinese东北女人 | 午夜时刻免费入口 | 婷婷六月久久综合丁香 | 天堂亚洲免费视频 | 无码av中文字幕免费放 | 老子影院午夜精品无码 | 国产又爽又黄又刺激的视频 | 性色欲网站人妻丰满中文久久不卡 | 国产精品无码成人午夜电影 | 精品人妻人人做人人爽 | 98国产精品综合一区二区三区 | 久久综合给久久狠狠97色 | 乱人伦人妻中文字幕无码久久网 | 国产女主播喷水视频在线观看 | 丰满护士巨好爽好大乳 | 无码吃奶揉捏奶头高潮视频 | 亚洲成a人一区二区三区 | 国产精品高潮呻吟av久久4虎 | 天下第一社区视频www日本 | 精品乱子伦一区二区三区 | 国产人妻人伦精品1国产丝袜 | 国产精品久久久久9999小说 | 无人区乱码一区二区三区 | 日韩av无码一区二区三区不卡 | 亚洲 欧美 激情 小说 另类 | 成人片黄网站色大片免费观看 | 国产精品久久精品三级 | 四虎4hu永久免费 | 亚洲啪av永久无码精品放毛片 | 乌克兰少妇xxxx做受 | 国产一区二区不卡老阿姨 | 久热国产vs视频在线观看 | 一本大道久久东京热无码av | 妺妺窝人体色www婷婷 | 高清无码午夜福利视频 | 国产精品永久免费视频 | 丰满人妻被黑人猛烈进入 | 香港三级日本三级妇三级 | 国产又爽又黄又刺激的视频 | 国产成人一区二区三区别 | 国产一区二区三区四区五区加勒比 | 青青久在线视频免费观看 | aⅴ亚洲 日韩 色 图网站 播放 | 久久精品成人欧美大片 | 高清不卡一区二区三区 | 亚洲日韩一区二区 | 亚洲精品久久久久久一区二区 | 国产成人精品无码播放 | 亚洲熟妇色xxxxx欧美老妇 | 大肉大捧一进一出好爽视频 | 久久久精品成人免费观看 | 久久午夜无码鲁丝片午夜精品 | 欧美日韩久久久精品a片 | 漂亮人妻洗澡被公强 日日躁 | 人人妻人人澡人人爽欧美一区 | 亚洲の无码国产の无码影院 | 无码乱肉视频免费大全合集 | 久久精品99久久香蕉国产色戒 | 国产激情艳情在线看视频 | 亚洲国产精品成人久久蜜臀 | 久久无码专区国产精品s | 蜜臀av在线播放 久久综合激激的五月天 | 精品一区二区不卡无码av | 国产精品人妻一区二区三区四 | 国产成人精品久久亚洲高清不卡 | 久久久中文字幕日本无吗 | 无码吃奶揉捏奶头高潮视频 | 欧美日韩综合一区二区三区 | 搡女人真爽免费视频大全 | 国内老熟妇对白xxxxhd | 久久视频在线观看精品 | 国产在线精品一区二区三区直播 | 国产av一区二区精品久久凹凸 | 粗大的内捧猛烈进出视频 | 熟妇女人妻丰满少妇中文字幕 | 国产精品无码成人午夜电影 | 国产精品高潮呻吟av久久4虎 | 日本在线高清不卡免费播放 | 撕开奶罩揉吮奶头视频 | 免费人成在线视频无码 | 国产麻豆精品一区二区三区v视界 | 色偷偷人人澡人人爽人人模 | 亚洲成av人综合在线观看 | 亚洲日韩一区二区 | 人人澡人摸人人添 | 黑人大群体交免费视频 | 日韩亚洲欧美中文高清在线 | 亚洲中文字幕无码中文字在线 | 亚洲s码欧洲m码国产av | 日韩精品成人一区二区三区 | 国产亚洲精品久久久闺蜜 | 国产av一区二区精品久久凹凸 | 国模大胆一区二区三区 | 露脸叫床粗话东北少妇 | 狠狠色噜噜狠狠狠7777奇米 | 中文字幕av伊人av无码av | 精品无码av一区二区三区 | 精品成在人线av无码免费看 | 国产激情无码一区二区 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产农村乱对白刺激视频 | 伊人久久大香线蕉av一区二区 | 性开放的女人aaa片 | 国产女主播喷水视频在线观看 | 中文字幕中文有码在线 | 好屌草这里只有精品 | 国产一精品一av一免费 | 俺去俺来也在线www色官网 | 欧美日韩精品 | 久久久久人妻一区精品色欧美 | 无码帝国www无码专区色综合 | 女人和拘做爰正片视频 | 亚洲人成人无码网www国产 | 欧美日韩人成综合在线播放 | 精品亚洲韩国一区二区三区 | 亚洲色大成网站www国产 | 性生交大片免费看女人按摩摩 | 成人欧美一区二区三区黑人 | 大地资源网第二页免费观看 | 国产精品爱久久久久久久 | 大肉大捧一进一出好爽视频 | 无码av中文字幕免费放 | 亚洲国产综合无码一区 | 精品久久久久久人妻无码中文字幕 | 丰满少妇熟乱xxxxx视频 | 麻豆av传媒蜜桃天美传媒 | 人人爽人人澡人人高潮 | 扒开双腿吃奶呻吟做受视频 | 亚洲国产精品一区二区美利坚 | 水蜜桃av无码 | 国产69精品久久久久app下载 | 国产精品视频免费播放 | 日韩精品无码一本二本三本色 | 亚洲国产精华液网站w | 色婷婷欧美在线播放内射 | 久久久久久国产精品无码下载 | 少妇无码av无码专区在线观看 | 综合人妻久久一区二区精品 | 久久熟妇人妻午夜寂寞影院 | 牲欲强的熟妇农村老妇女 | 免费男性肉肉影院 | 老子影院午夜精品无码 | 亚洲一区二区三区在线观看网站 | 精品久久8x国产免费观看 | 久久亚洲中文字幕无码 | 久久www免费人成人片 | 欧美日韩一区二区免费视频 | 激情内射亚州一区二区三区爱妻 | 国产成人精品必看 | 欧美亚洲国产一区二区三区 | 亚洲阿v天堂在线 | 国产色视频一区二区三区 | 男女爱爱好爽视频免费看 | 大肉大捧一进一出视频出来呀 | 麻豆国产人妻欲求不满 | 国产va免费精品观看 | 性色欲情网站iwww九文堂 | 国精产品一品二品国精品69xx | 午夜福利不卡在线视频 | 又粗又大又硬又长又爽 | 精品国产麻豆免费人成网站 | 婷婷综合久久中文字幕蜜桃三电影 | 在线a亚洲视频播放在线观看 | 7777奇米四色成人眼影 | 日日麻批免费40分钟无码 | 东京热男人av天堂 | 99精品视频在线观看免费 | 国产精品成人av在线观看 | 又大又硬又爽免费视频 | 性欧美疯狂xxxxbbbb | 亚洲中文字幕久久无码 | 老头边吃奶边弄进去呻吟 | 亚洲国产欧美在线成人 | 亚洲国产一区二区三区在线观看 | 无遮挡国产高潮视频免费观看 | 久久久久人妻一区精品色欧美 | 久久99精品久久久久久动态图 | 97久久国产亚洲精品超碰热 | 久久99国产综合精品 | 97色伦图片97综合影院 | 久久久精品成人免费观看 | 色婷婷香蕉在线一区二区 | 俺去俺来也在线www色官网 | 强奷人妻日本中文字幕 | 成人性做爰aaa片免费看 | 国产69精品久久久久app下载 | 少妇一晚三次一区二区三区 | 玩弄中年熟妇正在播放 | 领导边摸边吃奶边做爽在线观看 | 在线看片无码永久免费视频 | 亚洲精品一区三区三区在线观看 | 全球成人中文在线 | 高潮喷水的毛片 | 东京热无码av男人的天堂 | 亚洲一区二区三区播放 | 无套内谢的新婚少妇国语播放 | 娇妻被黑人粗大高潮白浆 | 精品国产av色一区二区深夜久久 | 亚洲中文字幕在线无码一区二区 | 又大又黄又粗又爽的免费视频 | 欧洲vodafone精品性 | 国产精品久久国产三级国 | 2020久久香蕉国产线看观看 | 中文字幕无码视频专区 | 亚洲一区二区三区含羞草 | 白嫩日本少妇做爰 | 国产色视频一区二区三区 | 欧美精品在线观看 | 亚洲国产精品久久人人爱 | 国产精品自产拍在线观看 | 99精品国产综合久久久久五月天 | 精品国产一区二区三区av 性色 | 精品欧美一区二区三区久久久 | 免费人成在线视频无码 | 免费看少妇作爱视频 | 欧美人与禽zoz0性伦交 | 国产精华av午夜在线观看 | 亚洲成av人综合在线观看 | 中文无码精品a∨在线观看不卡 | 九九热爱视频精品 | 欧美日韩久久久精品a片 | 欧美日韩一区二区免费视频 | 亚洲人成影院在线无码按摩店 | 亚洲午夜久久久影院 | 亚洲啪av永久无码精品放毛片 | 日本一本二本三区免费 | 精品午夜福利在线观看 | 狠狠色丁香久久婷婷综合五月 | 性欧美疯狂xxxxbbbb | 精品成人av一区二区三区 | 日韩亚洲欧美精品综合 | 亚洲va欧美va天堂v国产综合 | 67194成是人免费无码 | 国产九九九九九九九a片 | 久久精品中文闷骚内射 | 中文字幕色婷婷在线视频 | 丰满护士巨好爽好大乳 | yw尤物av无码国产在线观看 | 乱人伦人妻中文字幕无码 | 欧美日韩精品 | 小泽玛莉亚一区二区视频在线 | 国产精品无码成人午夜电影 | 欧美成人免费全部网站 | 又紧又大又爽精品一区二区 | 中文字幕无码av激情不卡 | 国产精品国产三级国产专播 | 成人精品天堂一区二区三区 | 我要看www免费看插插视频 | 久久久av男人的天堂 | 青春草在线视频免费观看 | 性色欲网站人妻丰满中文久久不卡 | 国产又粗又硬又大爽黄老大爷视 | 久久久久久九九精品久 | 大肉大捧一进一出视频出来呀 | 久久精品中文字幕大胸 | 成人av无码一区二区三区 | 亚洲精品久久久久avwww潮水 | 澳门永久av免费网站 | 亚洲精品综合一区二区三区在线 | 露脸叫床粗话东北少妇 | 一本一道久久综合久久 | 亚洲成av人影院在线观看 | а天堂中文在线官网 | 中文字幕乱码人妻二区三区 | 欧美三级a做爰在线观看 | 日日碰狠狠丁香久燥 | 男人扒开女人内裤强吻桶进去 | 国产两女互慰高潮视频在线观看 | 99久久久无码国产精品免费 | 国产午夜无码视频在线观看 | 亚洲国产欧美国产综合一区 | 国产成人午夜福利在线播放 | 特级做a爰片毛片免费69 | 亚洲国产欧美日韩精品一区二区三区 | 国产精品久久久久久久影院 | 日韩无套无码精品 | 久久国产精品二国产精品 | 狂野欧美性猛交免费视频 | 日韩精品乱码av一区二区 | 老熟女重囗味hdxx69 | 人妻与老人中文字幕 | 无码午夜成人1000部免费视频 | 久久精品人人做人人综合试看 | 久久精品视频在线看15 | 97无码免费人妻超级碰碰夜夜 | 色欲综合久久中文字幕网 | 久久人人97超碰a片精品 | 久久久精品人妻久久影视 | 天天av天天av天天透 | 欧美变态另类xxxx | 国产亚洲欧美在线专区 | 大屁股大乳丰满人妻 | 色噜噜亚洲男人的天堂 | 国产精品亚洲专区无码不卡 | 亚洲日韩av一区二区三区四区 | 国产精品成人av在线观看 | 色老头在线一区二区三区 | 成熟女人特级毛片www免费 | 欧美老人巨大xxxx做受 | 国产国语老龄妇女a片 | 精品国产国产综合精品 | 97色伦图片97综合影院 | 黑人巨大精品欧美黑寡妇 | 一本色道久久综合狠狠躁 | 免费看男女做好爽好硬视频 | 国产精品无码成人午夜电影 | 久久视频在线观看精品 | 久久99精品久久久久久动态图 | 中文字幕无线码免费人妻 | 激情人妻另类人妻伦 | 欧洲熟妇精品视频 | 女人被男人爽到呻吟的视频 | 夜夜高潮次次欢爽av女 | 中文久久乱码一区二区 | 久久精品99久久香蕉国产色戒 | 成年美女黄网站色大免费全看 | 少妇一晚三次一区二区三区 | 成人一区二区免费视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 亚洲经典千人经典日产 | 日本va欧美va欧美va精品 | 亚洲成av人影院在线观看 | 天堂а√在线中文在线 | 奇米影视7777久久精品 | 精品人妻av区 | 国产高潮视频在线观看 | 中文字幕无码免费久久99 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 精品国产成人一区二区三区 | 国产口爆吞精在线视频 | 国产精品欧美成人 | 精品国产福利一区二区 | 国产极品美女高潮无套在线观看 | 亚洲中文字幕乱码av波多ji | 亚洲欧美日韩国产精品一区二区 | 俄罗斯老熟妇色xxxx | 99精品无人区乱码1区2区3区 | 久久久久国色av免费观看性色 | 男人的天堂2018无码 | 人妻少妇被猛烈进入中文字幕 | 无码国产乱人伦偷精品视频 | 成人试看120秒体验区 | 久久人人97超碰a片精品 | 亚洲日韩中文字幕在线播放 | 国内精品久久久久久中文字幕 | 欧美肥老太牲交大战 | 精品国产一区二区三区四区在线看 | a在线观看免费网站大全 | 精品亚洲成av人在线观看 | 欧美日韩一区二区综合 | 精品国产麻豆免费人成网站 | 久久久www成人免费毛片 | 国产成人无码区免费内射一片色欲 | 精品久久久久久人妻无码中文字幕 | 亚洲精品久久久久中文第一幕 | 少妇无套内谢久久久久 | 天堂在线观看www | 永久免费观看美女裸体的网站 | 日本饥渴人妻欲求不满 | 成 人 网 站国产免费观看 | 日本一卡二卡不卡视频查询 | 性欧美疯狂xxxxbbbb | 97夜夜澡人人双人人人喊 | 亚洲日韩av一区二区三区四区 | 国产成人无码av片在线观看不卡 | 国产97在线 | 亚洲 | 亚洲欧美日韩国产精品一区二区 | 成人一在线视频日韩国产 | 精品国产av色一区二区深夜久久 | 亚洲精品一区三区三区在线观看 | 亚洲国产精品毛片av不卡在线 | 精品aⅴ一区二区三区 | 亚洲精品中文字幕 | 久久99精品国产麻豆 | 亚洲 高清 成人 动漫 | 国产精品美女久久久 | 最近的中文字幕在线看视频 | 国产三级精品三级男人的天堂 | 久久久久se色偷偷亚洲精品av | 中文字幕乱妇无码av在线 | 久久99精品久久久久婷婷 | √天堂中文官网8在线 | 97色伦图片97综合影院 | 久久zyz资源站无码中文动漫 | 亚洲一区二区三区在线观看网站 | 国产午夜福利100集发布 | 亚洲一区二区三区国产精华液 | 亚洲欧美综合区丁香五月小说 | 扒开双腿疯狂进出爽爽爽视频 | 国产av一区二区精品久久凹凸 | 福利一区二区三区视频在线观看 | 成年美女黄网站色大免费全看 | 巨爆乳无码视频在线观看 | 动漫av一区二区在线观看 | 国产口爆吞精在线视频 | 宝宝好涨水快流出来免费视频 | 亚洲国产一区二区三区在线观看 | 亚洲乱亚洲乱妇50p | 欧美怡红院免费全部视频 | 窝窝午夜理论片影院 | 亚洲精品久久久久avwww潮水 | 国产精品无码成人午夜电影 | 97夜夜澡人人爽人人喊中国片 | 少妇人妻大乳在线视频 | 国产成人无码午夜视频在线观看 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 日日躁夜夜躁狠狠躁 | 欧美国产日韩久久mv | 成人无码视频在线观看网站 | 夜夜高潮次次欢爽av女 | 成 人 网 站国产免费观看 | 亚洲人成网站色7799 | 18精品久久久无码午夜福利 | 国产性生交xxxxx无码 | 天堂а√在线中文在线 | 在线а√天堂中文官网 | 国产精品美女久久久 | 麻豆果冻传媒2021精品传媒一区下载 | 2020久久超碰国产精品最新 | 中文字幕无码人妻少妇免费 | 亚洲中文字幕无码一久久区 | 免费无码av一区二区 | 欧美黑人性暴力猛交喷水 | 亚洲成a人片在线观看无码 | 黑森林福利视频导航 | 成人片黄网站色大片免费观看 | 亚洲の无码国产の无码影院 | 国产欧美精品一区二区三区 | 久久久久成人精品免费播放动漫 | 国产农村妇女高潮大叫 | 人妻人人添人妻人人爱 | 精品乱码久久久久久久 | 日韩亚洲欧美精品综合 | 久久久久久久女国产乱让韩 | 小泽玛莉亚一区二区视频在线 | 亚洲中文字幕无码中字 | 亚洲国产精品一区二区第一页 | 亚洲中文字幕在线观看 | 国产午夜亚洲精品不卡下载 | 强开小婷嫩苞又嫩又紧视频 | 亚洲 欧美 激情 小说 另类 | 内射后入在线观看一区 | 国产亚洲精品久久久久久久久动漫 | 国产精品国产自线拍免费软件 | 亚无码乱人伦一区二区 | 最新国产麻豆aⅴ精品无码 | 国产明星裸体无码xxxx视频 | 欧美成人家庭影院 | 国产精品va在线播放 | 久久精品人人做人人综合 | 中文字幕无码日韩专区 | 99精品久久毛片a片 | 人妻人人添人妻人人爱 | 一本加勒比波多野结衣 | 少妇无码av无码专区在线观看 | 精品乱子伦一区二区三区 | 人妻插b视频一区二区三区 | 99久久无码一区人妻 | 亚洲性无码av中文字幕 | 福利一区二区三区视频在线观看 | 欧美日韩亚洲国产精品 | 少妇太爽了在线观看 | 亚洲日韩av一区二区三区四区 | 性欧美videos高清精品 | 亚洲人成网站在线播放942 | 国产精品国产自线拍免费软件 | 一区二区三区高清视频一 | 少妇无码一区二区二三区 | 亚洲中文字幕av在天堂 | av无码久久久久不卡免费网站 | 国产午夜亚洲精品不卡下载 | 任你躁国产自任一区二区三区 | 无码人妻精品一区二区三区不卡 | 人人妻人人澡人人爽欧美一区九九 | 亚洲成av人片天堂网无码】 | 国产精品美女久久久 | 久久午夜无码鲁丝片 | 无码国产乱人伦偷精品视频 | 伊人久久大香线焦av综合影院 | 日韩精品a片一区二区三区妖精 | 亚洲色大成网站www国产 | 乌克兰少妇性做爰 | 丰腴饱满的极品熟妇 | 噜噜噜亚洲色成人网站 | 人妻熟女一区 | 2019nv天堂香蕉在线观看 | 久久国产精品偷任你爽任你 | 久久亚洲a片com人成 | 丁香啪啪综合成人亚洲 | 影音先锋中文字幕无码 | 久久五月精品中文字幕 | 狠狠综合久久久久综合网 | 久久天天躁狠狠躁夜夜免费观看 | 99久久久无码国产精品免费 | 无码成人精品区在线观看 | 在线 国产 欧美 亚洲 天堂 | 亚洲国产精品久久久久久 | 精品欧洲av无码一区二区三区 | 亚洲日韩一区二区 | 欧美国产亚洲日韩在线二区 | 午夜丰满少妇性开放视频 | 国产成人精品久久亚洲高清不卡 | 中国大陆精品视频xxxx | 丰满人妻精品国产99aⅴ | 国产网红无码精品视频 | 999久久久国产精品消防器材 | 未满小14洗澡无码视频网站 | 色综合视频一区二区三区 | 三级4级全黄60分钟 | 国内精品人妻无码久久久影院 | 亚洲国产精品久久久久久 | 曰本女人与公拘交酡免费视频 | 无码成人精品区在线观看 | 嫩b人妻精品一区二区三区 | 亚洲精品美女久久久久久久 | 国精品人妻无码一区二区三区蜜柚 | 性色欲情网站iwww九文堂 | 国产成人精品三级麻豆 | 亚洲日韩一区二区三区 | 捆绑白丝粉色jk震动捧喷白浆 | 久久精品无码一区二区三区 | 真人与拘做受免费视频一 | 国产成人精品视频ⅴa片软件竹菊 | 国产激情精品一区二区三区 | 免费人成网站视频在线观看 | 国产真实乱对白精彩久久 | 欧美乱妇无乱码大黄a片 | 久久人人97超碰a片精品 | 日韩精品成人一区二区三区 | www国产亚洲精品久久久日本 | 水蜜桃亚洲一二三四在线 | 麻豆国产人妻欲求不满谁演的 | 欧美精品无码一区二区三区 | 男女超爽视频免费播放 | 给我免费的视频在线观看 | 中文字幕av无码一区二区三区电影 | 无码人妻久久一区二区三区不卡 | aa片在线观看视频在线播放 | 天堂亚洲免费视频 | 99riav国产精品视频 | 性欧美牲交在线视频 | a在线亚洲男人的天堂 | 丝袜足控一区二区三区 | 色欲人妻aaaaaaa无码 | 97无码免费人妻超级碰碰夜夜 | 久久精品国产精品国产精品污 | 国产97人人超碰caoprom | 国产人妻久久精品二区三区老狼 | 精品无码成人片一区二区98 | 日本熟妇乱子伦xxxx | 国产成人精品优优av | 欧美亚洲国产一区二区三区 | 亚洲爆乳无码专区 | 国产乱人伦av在线无码 | 老熟妇仑乱视频一区二区 | 55夜色66夜色国产精品视频 | 久久99精品国产麻豆蜜芽 | 亚洲 另类 在线 欧美 制服 | 亚洲理论电影在线观看 | 久激情内射婷内射蜜桃人妖 | 99精品无人区乱码1区2区3区 | 日韩欧美成人免费观看 | 妺妺窝人体色www婷婷 | 成人影院yy111111在线观看 | 久久伊人色av天堂九九小黄鸭 | 中文毛片无遮挡高清免费 | 亚洲色无码一区二区三区 | 牲交欧美兽交欧美 | 大肉大捧一进一出好爽视频 | 亚洲色欲色欲欲www在线 | 亚洲一区二区三区国产精华液 | 亚洲区小说区激情区图片区 | 亚洲呦女专区 | 性欧美熟妇videofreesex | 天天躁夜夜躁狠狠是什么心态 | 一区二区三区乱码在线 | 欧洲 | 国产乱码精品一品二品 | 麻豆人妻少妇精品无码专区 | 成人亚洲精品久久久久软件 | 免费国产黄网站在线观看 | 久久精品中文字幕大胸 | 亚洲精品一区二区三区四区五区 | 伊人久久大香线蕉午夜 | 人妻少妇精品无码专区动漫 | 久久人人97超碰a片精品 | 亚洲а∨天堂久久精品2021 | аⅴ资源天堂资源库在线 | 影音先锋中文字幕无码 | 在线а√天堂中文官网 | 男人的天堂av网站 | 日日麻批免费40分钟无码 | 老司机亚洲精品影院无码 | 熟女俱乐部五十路六十路av | 色老头在线一区二区三区 | 青草视频在线播放 | 欧美黑人乱大交 | 午夜精品一区二区三区在线观看 | 国产精品va在线观看无码 | 国产av一区二区精品久久凹凸 | 国产精品美女久久久久av爽李琼 | 亚洲欧美综合区丁香五月小说 | 131美女爱做视频 | 国产超级va在线观看视频 | 在线精品亚洲一区二区 | 亚洲国产精品一区二区美利坚 | 日本大乳高潮视频在线观看 | 呦交小u女精品视频 | 国产内射老熟女aaaa | 131美女爱做视频 | 国产亚洲日韩欧美另类第八页 | 日本乱偷人妻中文字幕 | 国产三级精品三级男人的天堂 | 又湿又紧又大又爽a视频国产 | 欧美丰满熟妇xxxx性ppx人交 | 亚洲精品美女久久久久久久 | 国产成人无码av片在线观看不卡 | 国产av一区二区三区最新精品 | 中文字幕av无码一区二区三区电影 | 国产做国产爱免费视频 | 中文字幕av无码一区二区三区电影 | 国产成人一区二区三区在线观看 | 亚洲色欲久久久综合网东京热 | 国产成人综合美国十次 | 樱花草在线社区www | 亚洲另类伦春色综合小说 | 亚洲综合另类小说色区 | 一本久久伊人热热精品中文字幕 | 亚洲综合在线一区二区三区 | 日韩成人一区二区三区在线观看 | 5858s亚洲色大成网站www | 亚洲一区二区三区香蕉 | 天天av天天av天天透 | 三上悠亚人妻中文字幕在线 | 性色av无码免费一区二区三区 | 激情内射日本一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 伊人久久婷婷五月综合97色 | 精品人妻中文字幕有码在线 | 精品日本一区二区三区在线观看 | 国产亚洲人成a在线v网站 | 全球成人中文在线 | 波多野结衣aⅴ在线 | 亚洲日韩一区二区 | 成人免费视频视频在线观看 免费 | 国产精品va在线观看无码 | 亚洲熟妇色xxxxx亚洲 | 人人妻人人藻人人爽欧美一区 | 亚洲无人区午夜福利码高清完整版 | 日本大香伊一区二区三区 | 日日橹狠狠爱欧美视频 | 国产办公室秘书无码精品99 | 波多野结衣乳巨码无在线观看 | av小次郎收藏 | 日日麻批免费40分钟无码 | 亚洲中文字幕无码一久久区 | 装睡被陌生人摸出水好爽 | 国产成人亚洲综合无码 | 亚洲欧美日韩综合久久久 | 蜜臀av在线播放 久久综合激激的五月天 | 成人三级无码视频在线观看 | 精品夜夜澡人妻无码av蜜桃 | 成人免费视频视频在线观看 免费 | 久久www免费人成人片 | 疯狂三人交性欧美 | 人妻互换免费中文字幕 | 国产午夜亚洲精品不卡下载 | 亚洲欧美国产精品专区久久 | 人妻有码中文字幕在线 | 沈阳熟女露脸对白视频 | 久久国产自偷自偷免费一区调 | 熟妇人妻激情偷爽文 | 国产香蕉97碰碰久久人人 | 日本熟妇大屁股人妻 | 亚洲自偷自偷在线制服 | 18黄暴禁片在线观看 | 1000部啪啪未满十八勿入下载 | 国产极品美女高潮无套在线观看 | 国产乡下妇女做爰 | 少妇厨房愉情理9仑片视频 | 亚洲中文字幕无码中字 | 久久综合香蕉国产蜜臀av | а√天堂www在线天堂小说 | 十八禁视频网站在线观看 | 成人毛片一区二区 | 十八禁视频网站在线观看 | 久久综合九色综合欧美狠狠 | 特黄特色大片免费播放器图片 | 亚洲一区二区三区在线观看网站 | 中文字幕人妻无码一区二区三区 | 扒开双腿疯狂进出爽爽爽视频 | 性欧美疯狂xxxxbbbb | 131美女爱做视频 | 国产成人无码av在线影院 | 中文字幕人妻无码一区二区三区 | 高清国产亚洲精品自在久久 | 亚洲色在线无码国产精品不卡 | 疯狂三人交性欧美 | 亚洲成在人网站无码天堂 | 曰韩无码二三区中文字幕 | 伊人色综合久久天天小片 | 国产凸凹视频一区二区 | 蜜桃av抽搐高潮一区二区 | 波多野结衣av在线观看 | 国产精品亚洲一区二区三区喷水 | 图片区 小说区 区 亚洲五月 | 久久久精品成人免费观看 | 国产莉萝无码av在线播放 | 麻花豆传媒剧国产免费mv在线 | 国精品人妻无码一区二区三区蜜柚 | 又粗又大又硬毛片免费看 | 国产精品永久免费视频 | 又紧又大又爽精品一区二区 | 东京热一精品无码av | 国产成人无码av在线影院 | 扒开双腿疯狂进出爽爽爽视频 | 成人动漫在线观看 | 99精品国产综合久久久久五月天 | 天天摸天天透天天添 | 国产精品久久久午夜夜伦鲁鲁 | 国产精品美女久久久网av | 骚片av蜜桃精品一区 | 国产av剧情md精品麻豆 | 欧美一区二区三区 | 亚洲综合无码久久精品综合 | 日本成熟视频免费视频 | 久久久久国色av免费观看性色 | 色综合久久久无码网中文 | 麻豆人妻少妇精品无码专区 | 老子影院午夜伦不卡 | 久久精品国产一区二区三区 | 香港三级日本三级妇三级 | 亚洲精品国产精品乱码视色 | 国产香蕉97碰碰久久人人 | 国产亚洲精品久久久久久大师 | 日本一卡2卡3卡四卡精品网站 | 动漫av一区二区在线观看 | 天堂在线观看www | 久久国产36精品色熟妇 | 亚洲乱码中文字幕在线 | 亚洲熟熟妇xxxx | 久久精品国产一区二区三区肥胖 | 97无码免费人妻超级碰碰夜夜 | 日韩人妻无码一区二区三区久久99 | 精品久久8x国产免费观看 | 性做久久久久久久久 | ass日本丰满熟妇pics | 永久免费精品精品永久-夜色 | 我要看www免费看插插视频 | 日本肉体xxxx裸交 | 日日躁夜夜躁狠狠躁 | 欧美日韩视频无码一区二区三 | 亚洲无人区一区二区三区 | 久久久久久久久888 | 青春草在线视频免费观看 | 色老头在线一区二区三区 | 樱花草在线播放免费中文 | 久久久久99精品国产片 | 综合人妻久久一区二区精品 | 欧美国产亚洲日韩在线二区 | 18禁止看的免费污网站 | 中文无码成人免费视频在线观看 | 国产成人无码区免费内射一片色欲 | 在线观看免费人成视频 | 青草视频在线播放 | 亚洲综合无码一区二区三区 | 少妇邻居内射在线 | 亚洲色www成人永久网址 | 荫蒂被男人添的好舒服爽免费视频 | 性欧美疯狂xxxxbbbb | 1000部啪啪未满十八勿入下载 | 黑人粗大猛烈进出高潮视频 | 亚洲性无码av中文字幕 | 日韩精品无码免费一区二区三区 | 天天拍夜夜添久久精品 | 综合人妻久久一区二区精品 | 国产精品理论片在线观看 | 永久免费观看美女裸体的网站 | 国产真实夫妇视频 | 亚洲熟女一区二区三区 | 色偷偷人人澡人人爽人人模 | 久久国产精品偷任你爽任你 | 无码av中文字幕免费放 | 中国大陆精品视频xxxx | 亚洲成a人片在线观看日本 | 国产成人综合色在线观看网站 | 亚洲熟妇色xxxxx欧美老妇y | 久久亚洲精品中文字幕无男同 | 国产一区二区三区精品视频 | 性做久久久久久久久 | 欧美成人高清在线播放 | 无码精品人妻一区二区三区av | 娇妻被黑人粗大高潮白浆 | 精品偷拍一区二区三区在线看 | 亚洲无人区午夜福利码高清完整版 | 亚洲人亚洲人成电影网站色 | 妺妺窝人体色www婷婷 | 无码人妻久久一区二区三区不卡 | 日韩精品一区二区av在线 | 欧美性生交活xxxxxdddd | 又大又硬又爽免费视频 | 天天躁夜夜躁狠狠是什么心态 | 国产成人综合美国十次 | 色 综合 欧美 亚洲 国产 | 99久久人妻精品免费一区 | 亚洲日本一区二区三区在线 | 国产亚洲人成在线播放 | 国产内射爽爽大片视频社区在线 | 国产午夜福利亚洲第一 | 欧美激情综合亚洲一二区 | 熟妇女人妻丰满少妇中文字幕 | 色婷婷av一区二区三区之红樱桃 | 男女猛烈xx00免费视频试看 | 国产欧美熟妇另类久久久 | 日韩av无码一区二区三区不卡 | 99久久久无码国产精品免费 | 久久综合狠狠综合久久综合88 | 亚洲中文字幕久久无码 | 中文字幕无码日韩专区 | 妺妺窝人体色www婷婷 | 亚洲一区二区三区在线观看网站 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产精品.xx视频.xxtv | 国产偷抇久久精品a片69 | 亚洲精品国产第一综合99久久 | 亚洲欧美中文字幕5发布 | 久久97精品久久久久久久不卡 | 久激情内射婷内射蜜桃人妖 | 2019午夜福利不卡片在线 | 久久精品国产一区二区三区 | 曰本女人与公拘交酡免费视频 | 国产成人午夜福利在线播放 | 亚洲精品国产品国语在线观看 | 少女韩国电视剧在线观看完整 | 久久精品中文字幕大胸 | 亚洲乱码国产乱码精品精 | 爱做久久久久久 | av在线亚洲欧洲日产一区二区 | 欧美日韩在线亚洲综合国产人 | 人妻少妇精品无码专区二区 | 色狠狠av一区二区三区 | 久久99精品久久久久婷婷 | 撕开奶罩揉吮奶头视频 | 国产亚洲日韩欧美另类第八页 | 久久久久久九九精品久 | 97无码免费人妻超级碰碰夜夜 | 精品少妇爆乳无码av无码专区 | 日日摸夜夜摸狠狠摸婷婷 | 日日躁夜夜躁狠狠躁 | 亚洲综合在线一区二区三区 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 亚洲高清偷拍一区二区三区 | 国产人妻精品一区二区三区不卡 | 国产精品久久久久7777 | 亚洲成av人影院在线观看 | 任你躁国产自任一区二区三区 | 天天做天天爱天天爽综合网 | 日韩少妇白浆无码系列 | 十八禁视频网站在线观看 | 丁香啪啪综合成人亚洲 | 成年美女黄网站色大免费视频 | av无码电影一区二区三区 | 18精品久久久无码午夜福利 | 午夜精品久久久久久久 | 欧美成人家庭影院 | av香港经典三级级 在线 | 久久综合给合久久狠狠狠97色 | av无码久久久久不卡免费网站 | 少妇被粗大的猛进出69影院 | 久久国语露脸国产精品电影 | 国产深夜福利视频在线 | 国产精品香蕉在线观看 | 熟妇人妻无码xxx视频 | 精品国产av色一区二区深夜久久 | 国产激情无码一区二区 | 男人和女人高潮免费网站 | 无码人妻精品一区二区三区下载 | 日本在线高清不卡免费播放 | 中文字幕无码免费久久9一区9 | 东京热一精品无码av | 最近免费中文字幕中文高清百度 | 天海翼激烈高潮到腰振不止 | 国产精品香蕉在线观看 | 日日摸夜夜摸狠狠摸婷婷 | 国产精品无套呻吟在线 | 久久99精品久久久久久 | 小鲜肉自慰网站xnxx | 亚洲性无码av中文字幕 | 男女猛烈xx00免费视频试看 | 国产97色在线 | 免 | 久久精品国产亚洲精品 | 精品无码av一区二区三区 | 久久精品中文闷骚内射 | 美女极度色诱视频国产 | 亚洲成av人片在线观看无码不卡 | 少妇的肉体aa片免费 | 国产在线精品一区二区三区直播 | 日本护士毛茸茸高潮 | 亚洲精品美女久久久久久久 | 久久综合网欧美色妞网 | 日本xxxx色视频在线观看免费 | 欧美xxxx黑人又粗又长 | 精品厕所偷拍各类美女tp嘘嘘 | 未满小14洗澡无码视频网站 | 亚洲精品国产精品乱码不卡 | 久久国语露脸国产精品电影 | 亚洲va中文字幕无码久久不卡 | 成人性做爰aaa片免费看 | 免费无码午夜福利片69 | 丰满诱人的人妻3 | 无码人妻丰满熟妇区毛片18 | 久久久久久久女国产乱让韩 | 久9re热视频这里只有精品 | 久久精品国产日本波多野结衣 | 红桃av一区二区三区在线无码av | 天天拍夜夜添久久精品 | 少妇厨房愉情理9仑片视频 | 亚洲 a v无 码免 费 成 人 a v | 亚洲欧洲无卡二区视頻 | 亚洲成色www久久网站 | 国产香蕉尹人视频在线 | 久久久久成人片免费观看蜜芽 | 中文无码精品a∨在线观看不卡 | 欧美精品一区二区精品久久 | 中文字幕无码热在线视频 | 国产乱人伦偷精品视频 | 久久久久亚洲精品男人的天堂 | 成人免费视频一区二区 | 麻豆av传媒蜜桃天美传媒 | 牲欲强的熟妇农村老妇女 | 久久久久免费精品国产 | 18禁黄网站男男禁片免费观看 | 国精产品一区二区三区 | 成人三级无码视频在线观看 | 国产午夜福利100集发布 | 999久久久国产精品消防器材 | 久久国产精品萌白酱免费 | 无码av最新清无码专区吞精 | 国产免费久久精品国产传媒 | 国产特级毛片aaaaaaa高清 | 波多野结衣av在线观看 | 中文字幕无码视频专区 | 国产成人精品一区二区在线小狼 | 久久久久99精品国产片 | 人人妻人人藻人人爽欧美一区 | 精品国产一区二区三区四区 | 国产无遮挡又黄又爽又色 | 日韩av无码一区二区三区 | 亚洲精品一区二区三区大桥未久 | 国产极品美女高潮无套在线观看 | 亚洲一区二区三区四区 | a在线亚洲男人的天堂 | 久久精品99久久香蕉国产色戒 | 久久99精品国产麻豆 | 亚洲伊人久久精品影院 | 综合网日日天干夜夜久久 | 东京热一精品无码av | 久久天天躁狠狠躁夜夜免费观看 | 亚洲人成网站免费播放 | 青青草原综合久久大伊人精品 | 丰满人妻一区二区三区免费视频 | 国产亚洲精品久久久久久久 | 国精产品一区二区三区 | 扒开双腿疯狂进出爽爽爽视频 | 国产精品办公室沙发 | 国产九九九九九九九a片 | 精品无码一区二区三区爱欲 | 亚洲综合色区中文字幕 | 欧美野外疯狂做受xxxx高潮 | 无码吃奶揉捏奶头高潮视频 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产在线aaa片一区二区99 | 亚洲欧美日韩成人高清在线一区 | 亚洲成色www久久网站 | 国产午夜手机精彩视频 | 任你躁国产自任一区二区三区 | 色综合久久中文娱乐网 | 色欲av亚洲一区无码少妇 | 国产亲子乱弄免费视频 | 性做久久久久久久免费看 | 国产人成高清在线视频99最全资源 | 熟妇女人妻丰满少妇中文字幕 | 一本色道久久综合狠狠躁 | 97夜夜澡人人爽人人喊中国片 | 中文字幕 亚洲精品 第1页 | 久久精品女人天堂av免费观看 | 亚洲の无码国产の无码步美 | 国产精品对白交换视频 | 在线а√天堂中文官网 | 国产成人无码一二三区视频 | 欧洲vodafone精品性 | 成人亚洲精品久久久久 | a国产一区二区免费入口 | 亚洲男人av香蕉爽爽爽爽 | 亚洲中文字幕乱码av波多ji | 正在播放东北夫妻内射 | 露脸叫床粗话东北少妇 | 国产猛烈高潮尖叫视频免费 | 97人妻精品一区二区三区 | 国产农村乱对白刺激视频 | 成人免费视频视频在线观看 免费 | 日本肉体xxxx裸交 | 成人性做爰aaa片免费看不忠 | 亚洲日本在线电影 | 帮老师解开蕾丝奶罩吸乳网站 | 图片区 小说区 区 亚洲五月 | 色婷婷久久一区二区三区麻豆 | 欧美三级不卡在线观看 | 国产精品.xx视频.xxtv | 国产激情无码一区二区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | yw尤物av无码国产在线观看 | 熟妇人妻中文av无码 | 99久久精品无码一区二区毛片 | 成人一在线视频日韩国产 | 色婷婷综合中文久久一本 | 一本久久伊人热热精品中文字幕 | 丰满妇女强制高潮18xxxx | 色五月五月丁香亚洲综合网 | 国产精品亚洲lv粉色 | 成人无码视频在线观看网站 | 无码人妻久久一区二区三区不卡 | 国产福利视频一区二区 | 亚洲欧洲日本无在线码 | 天海翼激烈高潮到腰振不止 | 国产成人一区二区三区在线观看 | 妺妺窝人体色www在线小说 | 丰满人妻一区二区三区免费视频 | 国内揄拍国内精品少妇国语 | 午夜熟女插插xx免费视频 | 精品熟女少妇av免费观看 | 天堂久久天堂av色综合 | 在线播放免费人成毛片乱码 | 黑人粗大猛烈进出高潮视频 | 无码人妻精品一区二区三区下载 | 日产精品99久久久久久 | 亚洲欧美精品伊人久久 | 狠狠色欧美亚洲狠狠色www | 国产av无码专区亚洲a∨毛片 | 蜜桃无码一区二区三区 | 人妻少妇精品无码专区二区 | 狠狠cao日日穞夜夜穞av | 亚洲中文字幕在线无码一区二区 | 亚洲区小说区激情区图片区 | 国产无套粉嫩白浆在线 | 国产亚洲精品久久久久久大师 | 久久亚洲日韩精品一区二区三区 | 中文字幕乱码中文乱码51精品 | 欧美成人高清在线播放 | 三上悠亚人妻中文字幕在线 | 97资源共享在线视频 | 国产综合久久久久鬼色 | 久久久精品欧美一区二区免费 | 国产美女精品一区二区三区 | 欧美 日韩 亚洲 在线 | 免费网站看v片在线18禁无码 | 伊在人天堂亚洲香蕉精品区 | 爱做久久久久久 | 国产亚洲视频中文字幕97精品 | 欧美日韩一区二区免费视频 | 国产在线无码精品电影网 | 久久视频在线观看精品 | 未满小14洗澡无码视频网站 | 99麻豆久久久国产精品免费 | 人妻无码久久精品人妻 | 国产精品国产三级国产专播 | 成 人 免费观看网站 | 人妻少妇被猛烈进入中文字幕 | 亚洲色欲色欲天天天www | 色综合久久88色综合天天 | 国产片av国语在线观看 | 久久精品国产一区二区三区 | 久久天天躁夜夜躁狠狠 | 日产精品高潮呻吟av久久 | 无码av岛国片在线播放 | 日日碰狠狠丁香久燥 | 图片区 小说区 区 亚洲五月 | 亚洲精品一区二区三区在线观看 | 中文精品无码中文字幕无码专区 | 亚洲人成网站色7799 | 欧美成人免费全部网站 | 欧洲熟妇色 欧美 | 成在人线av无码免观看麻豆 | 中文精品久久久久人妻不卡 | 精品无人区无码乱码毛片国产 | 伊人久久大香线焦av综合影院 | 欧美大屁股xxxxhd黑色 | 欧美高清在线精品一区 | 亚洲乱码国产乱码精品精 | 亚洲精品鲁一鲁一区二区三区 | 精品国精品国产自在久国产87 | 免费无码肉片在线观看 | 日本大香伊一区二区三区 | 亚洲人成影院在线无码按摩店 | 亚洲人成影院在线观看 | 无码国内精品人妻少妇 | 天天躁日日躁狠狠躁免费麻豆 | 伊人久久大香线蕉午夜 | 国产亚洲欧美在线专区 | 男女超爽视频免费播放 | 99久久人妻精品免费一区 | 天堂亚洲免费视频 | 亚洲综合色区中文字幕 | 国产精品久久久久9999小说 | 亚洲精品久久久久久一区二区 | 麻豆国产97在线 | 欧洲 | а√天堂www在线天堂小说 | 亚洲精品午夜国产va久久成人 | 午夜福利一区二区三区在线观看 | 成人动漫在线观看 | 国产午夜无码视频在线观看 | 特大黑人娇小亚洲女 | 亚洲日韩av一区二区三区四区 | 水蜜桃色314在线观看 | 中文字幕精品av一区二区五区 | 老子影院午夜精品无码 | 成在人线av无码免观看麻豆 | 亲嘴扒胸摸屁股激烈网站 | 亚洲一区av无码专区在线观看 | 成人免费无码大片a毛片 | 一个人看的视频www在线 | 国内揄拍国内精品少妇国语 | 精品国产福利一区二区 | 日本大香伊一区二区三区 | 日韩精品久久久肉伦网站 | 熟女少妇在线视频播放 | 性生交大片免费看女人按摩摩 | 午夜熟女插插xx免费视频 | 精品夜夜澡人妻无码av蜜桃 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲中文字幕在线观看 | 亚洲精品一区二区三区婷婷月 | 丝袜 中出 制服 人妻 美腿 | 无遮挡啪啪摇乳动态图 | 一本久久a久久精品亚洲 | 55夜色66夜色国产精品视频 | 免费视频欧美无人区码 | 精品无码成人片一区二区98 | 国产综合色产在线精品 | 少妇人妻大乳在线视频 | 亚洲成av人在线观看网址 | 一本加勒比波多野结衣 | 久久久久av无码免费网 | 女人被爽到呻吟gif动态图视看 | 亚洲中文字幕在线无码一区二区 | 四虎永久在线精品免费网址 | 一个人免费观看的www视频 | 草草网站影院白丝内射 | 久热国产vs视频在线观看 | 蜜臀av在线播放 久久综合激激的五月天 | 久久久久99精品国产片 | 最近中文2019字幕第二页 | 少妇人妻偷人精品无码视频 | 欧美老人巨大xxxx做受 | 亚洲日韩乱码中文无码蜜桃臀网站 | 在线观看免费人成视频 | 亚洲综合久久一区二区 | 国产精品人人爽人人做我的可爱 | 久久久久av无码免费网 | 精品久久8x国产免费观看 | 综合网日日天干夜夜久久 | 自拍偷自拍亚洲精品10p | 亚洲成av人在线观看网址 | 最新国产乱人伦偷精品免费网站 |