日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java高新技术笔记:反射、多线程、泛型、枚举、javaBean、代理

發布時間:2024/2/28 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java高新技术笔记:反射、多线程、泛型、枚举、javaBean、代理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1、IDE: Integrated Development Environment

2、集成開發環境兩個主流:Eclipse和netBeans

3、preference: 偏愛

4、Compiler: 編譯器;

5.Switcha javaspace:切換Java工作間

6.Perspective:透視圖

7.雖然我一直用Eclipse的alt加反斜杠,但是不知道它的英文名字,在preference中的key-contentAssist內容協助選項來設置一下快捷鍵

8、Myeclipse中的調試debug,可以使用step up 進行下一行,要查看變量的話右擊變量選中watch,下一行就會看到變量的變化了。

9、Java模版template:定義自己的快捷鍵:

10、jdk1.6新特性,可變參數

11、ariableParameter :可變參數

這個是JDK5.0以上的版本新加的功能。那個for循環也是新加的功能。那個可變參數的就是個數組,你傳多少個參數都被放到那個數組里面。 這樣方便了程序員,因為如果不確定要傳的參數的個數的話,我們要寫帶1個參數的,帶2個參數,帶3個參數的,這樣很麻煩。? 該進后的這個方法,我們只要寫一個函數就好,可以傳任意個參數

可變參數的數組args,是不包含第一個參數的哦,這個要記住。

package com.jianjian;

//jdk1.5 新特性,可變參數

public class Test2

{

?? public static void main(String[] args)

?? {

????? System.out.println(method(2,3,4));

????? System.out.println(method(3,4,5,5,6));

?? }

??

?? public static int method (int a ,int...args)

?? {

????? int sum = a;

????? System.out.println(args[0]);

????? for(int i = 0; i < args.length; i ++)

????? {

??????? sum = sum + args[i];

????? }

????? return sum;

?? }

}

?

?

10.

在導入包的時候一定要注意統一編碼!以及jdk的版本統一

11、

享元模式:flyWeight

12、享元模式(英語:Flyweight Pattern)是一種軟件設計模式。它使用共享物件,用來盡可能減少內存使用量以及分享資訊給盡可能多的相似物件;它適合用于當大量物件只是重復因而導致無法令人接受的使用大量內存。通常物件中的部分狀態是可以分享。常見做法是把它們放在外部數據結構,當需要使用時再將它們傳遞給享元。

典型的享元模式的例子為文書處理器中以圖形結構來表示字符。一個做法是,每個字形有其字型外觀, 字模 metrics, 和其它格式資訊,但這會使每個字符就耗用上千字節。取而代之的是,每個字符參照到一個共享字形物件,此物件會被其它有共同特質的字符所分享;只有每個字符(文件中或頁面中)的位置才需要另外儲存。以下程式用來解釋上述的文件例子。這個例子用來解釋享元模式利用只載立執行立即小任務所必需的資料,因而減少內存使用量。  

?

?

13、Java反射機制

JAVA反射機制:“程序運行時,允許改變程序結構或變量類型,這種語言稱為動態語言”。從這個觀點看,Perl,Python,Ruby是動態語言,C++,Java,C#不是動態語言。但是JAVA有著一個非常突出的動態相關機制:Reflection,用在Java身上指的是我們可以于運行時加載、探知、使用編譯期間完全未知的classes。換句話說,Java程序可以加載一個運行時才得知名稱的class,獲悉其完整構造(但不包括methods定義),并生成其對象實體、或對其fields設值、或喚起其methods

?

14.Class對象沒有構造方法,所以不能new出對象來

15、Class c =Person.class//這是一個字節碼,這個類的字節碼就會從內存中加載進來

16.Class.forName()返回一個字節碼

17、有三種方法獲得對象的字節碼

package com.jianjian;

?

public class Test3

{

?? public static void main(String[] args)throws ClassNotFoundException

?? {

????? Class c = Test3.class;

????? System.out.println(c);

????? System.out.println(c.getClass());

????? System.out.println(Class.forName("java.lang.String"));

?? }

}

?

?

18、

八中基本數據類型,加上void.class

19.

三種方法是用來返回字節碼所對應的類,這是唯一的;

package com.jianjian;

?

public class Test3

{

?? public static void main(String[] args)throws ClassNotFoundException

?? {

????? String s = "hello";

????? Class s1 = s.getClass();

????? Class s2 = String.class ;

????? Class s3 = Class.forName("java.lang.String");

????? //這三種方法返回的字節碼對應于同意類,所以字節碼是相同的

????? System.out.println(s3);

?????

????? System.out.println(s1== s2);

????? System.out.println(s1 == s3);

?? }

}

返回的都是同一類的字節碼

?

?

19.

Class的isPremitiv()方法,將判斷返回的字節碼是不是基本類型,包裝類型的TYPE屬性,將返對應基本類型的字節碼:

也就是說int.Class == Integer.TYPE;

20、這個方法同樣可以驗證數組也是對象,比如說

int[].class.isPrimitive()就將返回false,說明整形數組并不是基本數據類型哦,void也是一個類型,因為有它們各自的class對象

?

23. package com.jianjian;

?

import java.lang.reflect.Constructor;

import java.util.Arrays;

?

public class Test5

{

?? public static void main(String[] args)throws ClassNotFoundException

?? {

????? Class c = Class.forName("java.lang.String");

????? System.out.println(c);

????? Constructor[] s = c.getConstructors();

????? System.out.println(Arrays.toString(s));//獲取所有的構造方法

?

?? }

}

23/

?

24.

反射比較占用性能,導致程序性能嚴重下降

25、

Fileled類:反射中的成員變量

26.關于重寫和hashset的快捷鍵在Eclipse中是alt+shift+s

?

?

28.

字節碼一定要用等號比;因為都是拿同一份

29、

反射這個東西是無論如何也要弄懂啊:

反射中的Filed類,可以用于反射提取類中的成員變量:

我覺得例如Method類Constructor類都因該有類似的功能,

Class類中有兩個用來提取成員變量的方法,一個是

getField(Stringname);

一個是

getFields()

對于第一個是用來接受指定類中的一個 成員變量,傳入的字符串就是成員變量定義時的名字;但是要記住的是返回的類型是Field類,下面要用get方法傳入具體的對象才能獲得值;

比如說是這樣的:

一個類中Test有兩個成員變量

privateint a ;

publicint b;

我用getField(“a”)將獲得成員變量a對應的Field,但這只是類的成員變量,不是對象的成員變量,你打印的話,將會輸出類名加成員變量名,在用get方法傳入Test就能得到a的值;

?

而我用getFields()方法,將返回一個Field[] 數組,其中f[0]對應a,f[1]對應b;

然后就能分別進行處理;

但是 有注意到,b是私有的成員變量,這在反射中是不可見的,用getField方法將不能取得私有的成員變量,只有使用getDeclaredFiled(Sting name)getDeclaredFields()方法了;當然得到的類的私有成員變量也不能被訪問,需要暴力反射;獲取訪問權限;使用setAccessible(true)之后,再用get方法取出:

下面是完整的代碼:

?

package com.jianjian;

?

import java.lang.reflect.Field;

import java.util.Arrays;

?

public class Test1

{

?? public static void main(String[] args)throws Exception

?

?? {

????? Test2 test = new Test2(3,5);

????? Class c = test.getClass();//獲得類對應的字節碼,這是反射的第一步;

????? //首先使用getField()方法輸出成員變量

????? Field f1 = c.getField("a");

????? Field f2 = c.getDeclaredField("b");//因為b是私有的成員變量

????? int a = (Integer)f1.get(test);//get方法返回的是Object類型的

????? f2.setAccessible(true);//允許對私有成員變量訪問;

????? int b = (Integer)f2.get(test);

????? System.out.println(a);

????? System.out.println(b);

?????

?????

????? //下面使用getFields()方法輸出成員變量

????? Field[] f = c.getDeclaredFields();//因為有私有的成員變量,所以最好建議都是用這個方法

????? System.out.println(f[0].get(test));//省去匹配的步驟

????? f[1].setAccessible(true);

????? System.out.println(f[1].get(test));

?????

?????

?????

?????

?????

?? }

}

?

?

?

?

?

?

?

3.

package com.jianjian;

?

public class Test2

{

?? public int a ;

?? public int b;

?? public Strings1 ="basketball";//注意只有public的才可以使用getFields,其他的請用declared

?? public Strings2 ="ball";

??

?? public Test2(int a ,int b)

?? {

????? this.a = a;

????? this.b = b;

?? }

?? //打印對象就是打印對象的toSting方法,現在重寫一下對象的toString方法,

?? //讓它打印s1s2

?? public String toString()

?? {

????? return s1 +";"+ s2;

?? }

??

??

}

?

?

package com.jianjian;

?

import java.lang.reflect.Field;

?

public class Test3

{

?? /*反射的高級應用,竊取篡改信息

?? ?* 用反射來獲取Test2中的字符串變量,這就要求有篩選的步驟

?? ?* 獲取變涼后將字符串中的字符a變成字符b;在輸出字符串;

?? ?*/

??

?? public static void main(String[] args)throws Exception

?? {

????? Test2 test = new Test2(3,5);

????? Class c = test .getClass();

????? //首先篩出所有的成員變量

????? Field[] f = c.getFields();

????? for(Field? field : f)

????? {

??????? if(field.getType() == String.class)//判斷這個成員變量是不是字符串,字節碼一定要用

??????? {

?????????? String str = (String)field.get(test);//返回的對象肯定是字符串

?????????? //提取并更改字符串ab

?????????? String newStr = str.replace('b','a');

?????????? System.out.println(newStr);

?????????? field.set(test,newStr);//將新的局部變量加入到原有的對象中

???????

??????? }

???????

???????

????? }

????? System.out.println(test);

?????

?????

?????

?????

?????

?????

?????

?????

?????

?????

?????

?????

?????

?? }

}

30.

用發射調用方法:比如說調用String中的charAt(int index)

方法,這個用反射怎么實現:

Class類中的getMethod(Stringname, Class papameter)方法接受兩個參數,一個是要反射的方法名字,第二個是方法名字所接受數據類型的字節碼,這是個可變參數(variable Parameter)

就是為了區分方法重載,確定你要調用那一個方法;

package com.jianjian;

?

import java.lang.reflect.Method;

?

public class Test4

{

?? public static void main(String[] args)throws Exception

?? {

????? String s = "helloWorld";

?

????? Class c = s.getClass();

????? Method method = c.getMethod("charAt",int.class);

????? char a = (Character) method.invoke(s, 0);//沒有人知道一個類中的某一個方法到底返回什么類型,只要你知道

????? System.out.println(a);

?

?? }

}

31、

package com.jianjian;

//普通的調用一個類的main方法

public class Test8

{

?? public static void main(String[] args)

?? {

?

????? Reflect.main(new String[] {"1","222" });

?? }

}

?

class Reflect

{

?? public static void main(String[] args)

?? {

????? for (String s : args)

????? {

??????? System.out.println(s);

????? }

?? }

?

}

?

?

32、

選中一個類然后按下F2就可以看到這個類的完整類名了;

package com.jianjian;

?

public class Test9

{

?? public static void main(String[] args)

?? {

????? for(String s :args)

????? {

??????? System.out.println(s);

????? }

?? }

}

?

package com.jianjian;

//用反射的方式來調用test9中的main方法

import java.lang.reflect.Method;

?

public class Test8

{

?? public static void main(String[] args)throws Exception

?? {

????? //首先,我要獲得Test9中的完整類路徑名;需要為args賦值的話,請用

????? //f2獲得當前類的的完整路徑名,然后run as,運行配置,在當前的main方法中將類名賦予第一個參數

????? String className = args[0];//這樣就獲得了Test9的類名稱

????? Class c = Class.forName(className);

????? Method m = c.getDeclaredMethod("main", String[].class);//是一個字符串數組類的字節碼

?

????? System.out.println(m);

????? m.invoke(null, (Object)new String[] {"222","333","444" });

????? //這個Object最好記住,就是把數組當成整體,因為實際上args本身也就是一個,如果不加Object這就相當于是三個了

?????

?????

?? }

}

?

?

33.

/*

?* 看張老師的視屏還是收獲頗豐啊!

?* int類型是基本數據類型,不是對象類型,不繼承Object

?* Java中所有的數組都是對象,也就是說數組也是繼承了Object

?* 所以我可以這樣說,int[]繼承了Object

?* 下面再來看一下int[] Object[]的區別

?* int[]的意思是定義一個整形數組,里面存放int型的基本數據

?* Object[]的意思是定義一個Object類型的數組,里面存放Object類型的對象,

?* 一個放基本數據類型,一個放對象類型,你說相等不想等

?* 所以有 Object[] b == Integer[] a;Object[] == int[]這個是絕對錯的;

?* 但是Object[] b是不是可以等于 int[][] a呢;答案是肯定的,int[][]可以這樣來理解,

?* 定義一個int類型的數組,里面用來存放int類型的數組,兩個都是Object類型的,肯定是相等的,

?* 所以以后不要再把對象類型強制為對象類型了!,看下面的例子!

?*/

package com.jianjian;

?

public class Test10

{

?? public static void main(String[] args)

?? {

????? int[] a1 = new int[10];

????? int[][] a2 =newint[2][3];

????? String[] s = new String[3];

????? Object[] o = new Object[10];

????? // o = a1;這行是錯的

????? o = a2;

????? o = s;

????? s = (String[]) o;

?

?? }

}

?

?

34.

?

判斷是不是數組Arrays.isArray();

?

?

35/

?

?

36/

相對路徑和絕對路徑

絕對路徑:是從盤符開始的路徑,形如 C:\windows\system32\cmd.exe 相對路徑:是從當前路徑開始的路徑,假如當前路徑為C:\windows 要描述上述路徑,只需輸入 system32\cmd.exe 實際上,嚴格的相對路徑寫法應為 .\system32\cmd.exe 其中,.表示當前路徑,在通道情況下可以省略,只有在特殊的情況下不能省略。 假如當前路徑為c:\program files 要調用上述命令,則需要輸入 ..\windows\system32\cmd.exe 其中,..為父目錄。 當前路徑如果為c:\program files\common files 則需要輸入 ..\..\windows\system32\cmd.exe另外,還有一種不包含盤符的特殊絕對路徑,形如 \windows\system32\cmd.exe 無論當前路徑是什么,會自動地從當前盤的根目錄開始查找指定的程序。

introspector

37、

?

?

38、不是太理解javabean的作用

?

?

39.

來說一下我自己對javaBean的理解吧,如果說,我想從一個類中,拿取它的成員變量,當然,我不知道這個成員變量的訪問修飾符是怎樣的,只知道里面有一個獲取該變量的方法,比如說get方法,但是我又不知道其他人是怎么定義的這個方法名字,javabean就可以從傳入的對象類中,獲取這個類似的get方法和set方法:

package com.jianjian;

?

import java.beans.PropertyDescriptor;

import java.lang.reflect.Method;

?

public class Test12

{

?? public static void main(String[] args)throws Exception

?? {

????? Test11 test = new Test11(22,"zhangsan");

????? String varName = "age";//定義要獲取的變量的名稱

????? PropertyDescriptor pro1 = new PropertyDescriptor(varName, test

?????????? .getClass());

????? // 可以看到,PropertyDescriptorbean包下的一個類,它的構造方法,接收兩個參數,一個

????? // 你要獲取的變量的名字,第二個是對象類的字節碼

?

????? Method getMethod = pro1.getReadMethod();

????? // 意思是獲取對象中的一個可以讀取變量的一個方法,同樣的有write方法

????? // 獲取方法后當然就可以使用invoke來調用了

????? Object ob = getMethod.invoke(test);

????? System.out.println(ob);//然后你就可以看到22

?

????? // 下面我來將原有對象中的name屬性修改,該位33

?

????? Method setMethod = pro1.getWriteMethod();//獲取set類似方法

????? setMethod.invoke(test, 33);

????? Object ob2 = getMethod.invoke(test);

????? System.out.println(ob2);

?

?? }

}

一個Eclipse小技巧:方法重構:Method

當然,其實上面的代碼只完成了兩件事,一個是獲取一個整形的變量name,一個是set一個整形的變量name進去,這完全也可以用兩個方法來實現

方法重構:Method Refactor:alt + shift + t

?

對選中的代碼重組成一個方法,最好不要出現基本類型,最好將變量卸載外部,能夠用來調用也就是傳遞進方法:

package com.jianjian;

?

import java.beans.PropertyDescriptor;

import java.lang.reflect.InvocationTargetException;

import java.lang.reflect.Method;

?

public class Test12

{

?? public static void main(String[] args)throws Exception

?? {

????? Test11 test = new Test11(22,"zhangsan");

????? String varName = "age";//定義要獲取的變量的名稱

????? PropertyDescriptor pro1 = new PropertyDescriptor(varName,test.getClass());

????? // 可以看到,PropertyDescriptorbean包下的一個類,它的構造方法,接收兩個參數,一個

????? // 你要獲取的變量的名字,第二個是對象類的字節碼

?

????? Method getMethod = pro1.getReadMethod();

????? // 意思是獲取對象中的一個可以讀取變量的一個方法,同樣的有write方法

????? // 獲取方法后當然就可以使用invoke來調用了

????? Object ob = getMethod.invoke(test);

????? System.out.println(ob);//然后你就可以看到22

?

????? // 下面我來將原有對象中的name屬性修改,該位33

?

????? retrunSet(test, pro1, getMethod);

?

?? }

?

?? private static void retrunSet(Test11 test, PropertyDescriptor pro1,

??????? Method getMethod) throws IllegalAccessException,

??????? InvocationTargetException

?? {

????? Method setMethod = pro1.getWriteMethod();//獲取set類似方法

????? setMethod.invoke(test, 33);

????? Object ob2 = getMethod.invoke(test);

????? System.out.println(ob2);

?? }

}

?


41.

對一個類中的一個變量名進行更改,將會牽涉到所有的變量,選中變量名后,使用重構,或者用快捷方式 alt shift R

42/

這個意思是說

package com.jianjian;

?

import java.util.ArrayList;

?

public class GenericTest1

{

?? public static void main(String[] args)

?? {

?? ArrayList<String> list1 = new ArrayList<String>();

?? ArrayList<Integer> list2 = new ArrayList<Integer>();

??

?? boolean b = (list1.getClass() == list2.getClass());

?? System.out.println(b);

?? }

}

你覺得打印的結果是true還是false呢,結果是true

?

43、

泛型是編譯期的行為,也就是說只在編譯時起作用,如果你為集合添加的數據類型不匹配,它是會提醒你出錯的,但是

反射是運行期的,也就是說它可以繞過泛型的約束,比如你可以向一個指定Integer類型的ArrayList添加一個字符串,下面用反射的方式來實現:

package com.jianjian;

?

import java.util.ArrayList;

?

public class GenericTest2

{

?? public static void main(String[] args)throws Exception

?? {

????? ArrayList<Integer> list1 = new ArrayList<Integer>();

?????

????? //用反射的方法調用其add方法,添加一個字符串

????? list1.getClass().getMethod("add",Object.class).invoke(list1,"name");

????? System.out.println(list1.get(0));

?????

?????

?? }

}

結果證明真的是打印了name;

43、

?

?

?

?

44.

八種基本數據類型的父類是Number,所以用泛型的時候可以這樣寫:? extends Number

45、

?

46、

為自己掙了四個技術分的題目

package com.jianjian;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Set;

import java.util.TreeMap;

import java.util.Map.Entry;

?

public class Test {

?

?? /**

?? ?* 題目:已有字符串Str1,"sdfghellozxsdfcvwaadfafsasdfxcvdf"鍵盤輸入任意字符串,:String

?? ?*str2="HaHahello01", 在原來字符串Str1中去掉str2中最大的交集字符串(hello),

?? ?* 獲取該字符串str1中的每個字母出現的次數。

?? ?*

?? ?* 例如:去掉hello以這種方式打印:按次數從大到小排序,次數相同,按字母從大到小排序!

?? ?* f(出現6)d(出現5)s(出現4)x(出現2)v(出現2)c(出現2)w(出現1)g(出現1)

?? ?*

?? ?* @param args

?? ?* @throws Exception

?? ?* @author張熙韜

?? ?*/

?? public static void main(String[] args)throws Exception {

????? String str1 = "sdfg,hellozx,sdfcv-waadfa,fsasdfxcvdf";

????? BufferedReader bufr = new BufferedReader(new InputStreamReader(

??????? ?? System.in));

?

????? String str2 = bufr.readLine();

????? StringBuffer sb = new StringBuffer(str1);

?

????? // 去掉子字符串

????? int index = sb.indexOf(str2);

????? sb = sb.delete(index, index + str2.length());

?

????? String answer = sb.toString();

????? System.out.println("去掉最大子字符串之后的字符串為:" + answer);

?

????? // 統計每個字母出現的次數

????? StringBuffer answerSb = new StringBuffer(charCount(answer));

????? //System.out.println(answerSb.reverse());

????? System.out.println(answerSb);

?

?? }

?? /**

?? ?* 統計每個字母出現的次數

?? ?*

?? ?* @param str

?? ?* @return

?? ?*/

?? public static String charCount(String str) {

????? char[] chs = str.toCharArray();

????? // 傳入工具類反轉函數,下面再定義EntryComparator函數,最后排序結果是EntryComparator,說明自定義函數優先權最高!

????? TreeMap<Character, Integer> tm = newTreeMap<Character, Integer>(

?????????? Collections.reverseOrder());

????? for (int i = 0; i < chs.length; i++) {

??????? if (!(chs[i] >'a' && chs[i] <'z' || chs[i] >'A' && chs[i] <'Z')) {

?????????? continue;

??????? }

??????? Integer value = tm.get(chs[i]);

??????? if (value ==null) {

?????????? tm.put(chs[i], 1);

??????? } else {

?????????? value += 1;

?????????? tm.put(chs[i], value);

??????? }

????? }

????? StringBuilder sb = new StringBuilder();

????? Set<Map.Entry<Character, Integer>> entrySet =tm.entrySet();

?

????? //使用自定義子字符串進行排序,先要將entrySet變成list集合,才能使用Collections.sort方法

????? List<Map.Entry<Character, Integer>> entryLists = newArrayList<Map.Entry<Character, Integer>>(entrySet);

?????

????? //使用Collections.sort方法對字符出現次數排序

????? Collections.sort(entryLists, new EntryComparator());

?????

????? Iterator<Entry<Character, Integer>>it=entryLists.iterator();

????? while(it.hasNext()){

??????? Entry<Character, Integer> me=it.next();

??????? Character key = me.getKey();

??????? Integer value = me.getValue();

??????? sb.append(key + "(出現" + value +")");

????? }

?????

????? //這種方式要簡便一些

/*??? for (Entry<Character, Integer> entry : entryLists) {

??????? Character key = entry.getKey();

??????? Integer value = entry.getValue();

??????? sb.append(key + "(出現" + value + ")");

????? }*/

?

????? return sb.toString();

?? }

?

?? /**

?? ?* 獲取最大子字符串

?? ?*/

?? public static String getMaxString(String str1, String str2) {

????? String max = str1.length() > str2.length() ? str1 : str2;

????? String min = max == str1 ? str2 : str1;

????? for (int i = 0; i < min.length(); i++) {

??????? for (int j = 0, k = min.length() - i; k != min.length() + 1; j++,k++) {

?????????? String subString = min.substring(j, k);

?????????? if (max.contains(subString)) {

????????????? return subString;

?????????? }

????? ?? }

????? }

????? return null;

?? }

?

}

?

class EntryComparatorimplementsComparator<Map.Entry<Character, Integer>> {// value列表順序的比較器

?

?? public int compare(Map.Entry<Character, Integer> map1,

??????? Map.Entry<Character, Integer> map2) {//重寫compare方法

????? return map2.getValue().compareTo(map1.getValue());//降序排列

?? }

?

}

?

?

?

47.

Entry是一個接口,是Map的一個內部類

java.util.Map.Entry

Entry相當于是獨立的Map,單獨的存儲key set

map的entrySet方法返回一個set類型

entrySet

public Set<Map.Entry<K,V>> entrySet()

?

還記得兩種遍歷 map的方法嗎?

記住map本身并沒有實現Iterator接口哦!

package com.jianjian;

?

import java.util.HashMap;

import java.util.Iterator;

import java.util.Set;

import java.util.Map.Entry;

?

public class GenericTest3

{

?? public static void main(String[] args)

?? {

????? HashMap<String, Integer> map = new HashMap<String,Integer>();

????? map.put("zhangsan", 33);

????? map.put("lisi", 44);

????? map.put("wangwu", 55);

????? // Entry方法遍歷map成員

?

????? Set<Entry<String, Integer>> set = map.entrySet();//

????? for (Entry entry : set)

????? {

??????? System.out.println(entry.getKey());//得到key

??????? System.out.println(entry.getValue());//得到value

??????? ;

????? }

?

????? // 第二種方法,使用迭代器

????? Set<String> keySet = map.keySet();

?

????? for (Iterator<String> ite = keySet.iterator();ite.hasNext();)

????? {

??????? String name = ite.next();

??????? int age = map.get(name);

??????? System.out.println(name +":" + age);

?

????? }

?

?? }

}

?

?

48、

?

?

48、

49、

類加載器:Class loader

?

package com.jianjian;

?

public class ClassLoaderTest1

{

?? public static void main(String[] args)

?? {

????? Class c = ClassLoaderTest1.class.getClassLoader().getClass();

????? String name = c.getName();

????? System.out.println(c);//除了bootstrap是虛擬機加載器,其他的加載器都是Java類,都存在字節碼

?????

????? //來看一下bootStrap類加載器,通過System返回的是null,不代表不存在,而是存在于虛擬機中,無法被調用

?????

//??? Class c2 = System.class.getClassLoader().getClass();

//??? System.out.println(c2);

//??? 這樣打印出異常了,因為getClassLoaer的返回值是null

????? System.out.println(System.class.getClassLoader());

?????

?????

?? }

}

?

50.

?

?

?

51、

52、

package com.jianjian;

/*創建動態類,及查看方法列表信息

?* StringBuilderStringBuffer的功能基本一致,知識在線程方面上有所區別

?* */

import java.lang.reflect.Constructor;

import java.lang.reflect.Proxy;

import java.util.Collection;

?

public class ProxyTest1

{

?? public static void main(String[] args)

?? {

????? //Proxy代理類的構造方法接受兩個參數,第一個參數是類加載器,第二個是接口的字節碼,以Collector為例

?? ?? Class clazzProxy =Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class);

????? //既然返回的是一個字節碼,那它肯定是一個類,下面打印它的構造方法和方法

????? Constructor[] clazzConstructor =clazzProxy.getConstructors();

????? for(Constructor con : clazzConstructor)

????? {

??????? String name = con.getName();

??????? System.out.println(name);

??????? //這將會打印出構造方法的名字,我想打印出構造方法和其中的參數類型,來看一下字符串拼接

??????? StringBuilder str =new StringBuilder(name);

??????? str.append("(");

??????? //取出構造方法中的參數

??????? Class[] clazzcon =?con.getParameterTypes();

??????? //前提是有參數

??????? if(clazzcon.length != 0)

??????? {

?????????? for(Class clazz: clazzcon)

?????????? {

????????????? str.append(clazz.getName());

????????????? str.append(",");

?????????? }

??????? }

??????? str.append(")");

??????? System.out.println(str.toString());

????????????????????????

???????

??????????

??????????

??????????

???????

???????

????? }

?????

?????

?? }

}

$Proxy0

$Proxy0(java.lang.reflect.InvocationHandler,)

?

54、

?

55、

代理類proxy的構造方法要求接收一個InvocationHandle類型的參數,而InvocationHandle是一接口,接口中只有一個方法: invoke,描述如下

Object

invoke(Object proxy,Method method,Object[] args)
Processes a method invocation on a proxy instance and returns the result.

?

要調用那個對象的那個方法的那些參數????

?

public static void main(String[] args)throws Exception

?? {

????? //Proxy代理類的構造方法接受兩個參數,第一個參數是類加載器,第二個是接口的字節碼,以Collector為例

????? Class clazzProxy = Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class);

????? //既然返回的是一個字節碼,那它肯定是一個類,下面打印它的構造方法和方法

????? Constructor[]clazzConstructor = clazzProxy.getConstructors();

???????

????? Constructor con2 = clazzProxy.getConstructor(InvocationHandler.class);

????? //得到構造方法

????? //得到代理類的實例:構造方法接受一個InvocationHandle接口類型的參數,使用匿名內部累一步搞定

????? Object obj = con2.newInstance(new InvocationHandler(){

??????? @Override

??????? public Object invoke(Object proxy, Method method, Object[]args)

????????????? throws Throwable

??????? {

?????????? // TODO Auto-generatedmethod stub

?????????? return null;

??????? }

???????

???????

????? });

????? //這樣就用反射的方法得到了一個代理烈的實例對象,打印對象的toString方法

????? System.out.println(obj.toString());//打印的結果是null

????? //因為你在匿名內部累中,什么都沒干,返回的是null

?????

?????

?

?

?

?

56、

但是這樣做還是有些麻煩,其實在Proxy類中提供了一個方法newProxyInstance

public static Object newProxyInstance(ClassLoader loader, ???????????????????????????????? ?????Class<?>[] interfaces, ????????????????????????????????????? InvocationHandler h) ???????????????????????? ??????throws IllegalArgumentException

?

這個方法將上面反射的步驟一步到位

1創建動態類 2 得到動態類的實例對象

可變參數只能位于參數的最后一個,中間的只能是數組

package com.jianjian;

?

import java.lang.reflect.Constructor;

import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

import java.util.Collection;

?

//下面我寫一下完整的,用反射的方法得到實現了Collection接口(可以多個接口)動態類,并生成Collection動態類的實例對象

public class ProxyTest2

{

?? public static void main(String[] args)throws Exception

?? {

????? //得到Collection動態類

????? Class clazzCollection = Proxy.getProxyClass(Collection.class.getClassLoader(),Collection.class);

????? //生成Collection動態類實例對象

????? //要接受的參數類型是InvocationHandle類型的參數

????? Constructor con = clazzCollection.getConstructor(InvocationHandler.class);

????? //生成實例對象,使用匿名內部類

????? Object obj = con.newInstance(new InvocationHandler(){

???????

??????? @Override

??????? public Object invoke(Object proxy, Method method, Object[]args)

????????????? throws Throwable

??????? {

?????????? // TODO Auto-generatedmethod stub

?????????? return null;

??????? }

????? });

?????

????? //打印這個對象

????? System.out.println(obj.toString());

?????

?????

?????

?? }

}

?

然后是使用Proxy的newInstance()方法

public class ProxyTest3

{

?? public static void main(String[] args)

?? {

????? //注意到第二個參數的提示,是一個class[]數組,但是我只需要添加一個Collection類型的接口就可以了

????? //注意看一下怎么寫,new clss[]{Collection.class}

????? Collection collection =(Collection) Proxy.newProxyInstance(Collection.class.getClassLoader(),

?????????? ???? newClass[]{Collection.class},

?????????? ???? newInvocationHandler()

????????????? {

????????????????

???????????????? @Override

???????????????? public Object invoke(Object proxy, Method method, Object[]args)

????????????????????? throws Throwable

????????????? ?? {

??????????????????? // TODO Auto-generatedmethod stub

??????????????????? returnnull;

???????????????? }

????????????? }

????? );

?? }

}

?

?

56.

package com.jianjian;

?

import java.lang.reflect.InvocationHandler;

import java.lang.reflect.Method;

import java.lang.reflect.Proxy;

import java.util.ArrayList;

import java.util.Collection;

?

public class ProxyTest3

{

?? public static void main(String[] args)

?? {

????? // 注意到第二個參數的提示,是一個class[]數組,但是我只需要添加一個Collection類型的接口就可以了

????? // 注意看一下怎么寫,new clss[]{Collection.class}

????? Collection collection = (Collection) Proxy.newProxyInstance(

?????????? Collection.class.getClassLoader(),

?????????? new Class[] { Collection.class },new InvocationHandler()

?????????? {

????????????? ArrayList list =newArrayList();//這里打印2

?

????????????? @Override

????????????? public Object invoke(Object proxy, Method method,

??????????????????? Object[] args) throws Throwable

????????????? {

???????????????? // ArrayList list= new ArrayList();

???????????????? // list寫到成員變量里面,就不會初始化了,這里打印0

???????????????? // TODO Auto-generatedmethod stub

???????????????? return method.invoke(list, args);

????????????? }

?????????? });

?

????? // 得到實例對象之后,就可以調用對象的方法了;

????? // 打印一下未加參數時它的size方法

????? // System.out.println(collection.size());

????? // 結果是空指針異常,這說明對象為空,因為你就沒有處理對象,返回的是null

????? // 下面,我們將對象指定為ArrayList

????? collection.add("zhangsan");//動態類每使用一次就會去調用handler對象的invoke方法,這也就是實現了對原方法的改動

?

????? collection.add("lisi");

????? System.out.println(collection.size());

?

?? }

}

?

?

?

?

?

?

?

?

?

57

Object

invoke(Object proxy,Method method,Object[] args)
Processes a method invocation on a proxy instance and returns the result.

這個方法接受的三個參數到底是什么呢?

代理對象,代理對象的那個方法,接受那些參數

我來演示一下代理的原理,本來,執行collection.add()方法時,會調用handler的invoke方法,但是invoke指定的對象確實可變的,下面就是我把執行的對象換成了ArrayList,最后返回的是ArrayList對象,這就是動態類的改變功能,在方法的什么位置寫,用什么對象,都會產生差異,其實add方法的返回值就是invoke返回的對象Object,你可以生成驗證

要注意到add方法已經發生了改變了

new Class[] { Collection.class },new InvocationHandler()

?????????? {

????????????? ArrayList list =newArrayList();//這里打印2

?

????????????? @Override

????????????? public Object invoke(Object proxy, Method method,

??????????????????? Object[] args) throws Throwable

????????????? {

???????????????? Object obj = method.invoke(list,args);

????????????????

???????????????? // TODO Auto-generatedmethod stub

???????????????? return obj;

????????????? }

?????????? });

?

當然也可以對參數進行修改!

這也就是解釋了為什么調用 collection.add方法會出現異常,因為調用該方法,觸發invoke方法返回的對象是你自己指定的,我當時返回的是null,null可不是整形啊,所以肯定會報錯的

但是但是:不是對象的所有方法都交給Handler,比如說調用Collection.getClass方法,這是因為繼承了Object的類,getClass是Object的方法,看文檔

只有這三個方法會用到Invoke方法,其他的object的方法將會有自己的調用

58、

?


總結

以上是生活随笔為你收集整理的Java高新技术笔记:反射、多线程、泛型、枚举、javaBean、代理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

五月婷影院 | 国产在线专区 | 91香蕉视频 | 天天操天天爱天天爽 | 国产精品欧美一区二区 | 久久精品欧美一区 | 久久免费视频这里只有精品 | 最近中文字幕免费视频 | 超碰.com| 中文字幕乱在线伦视频中文字幕乱码在线 | 岛国av在线不卡 | 国产小视频在线观看免费 | 国产高清99 | 亚洲视频综合在线 | 精品久久久一区二区 | 日韩精品短视频 | 亚洲二区精品 | 国产福利小视频在线 | 国产精品久久久久久69 | 中文字幕第一页在线播放 | 久久久免费精品视频 | 国产粉嫩在线观看 | 日韩欧美国产免费播放 | 婷婷丁香六月 | 丁香视频在线观看 | a久久免费视频 | 欧美韩国在线 | 成人免费观看视频网站 | 国产福利一区二区三区视频 | 日韩精品一区二区三区视频播放 | 超碰97在线资源站 | 国产精品精品久久久 | 亚洲欧美日韩国产一区二区三区 | 深爱综合网 | 亚洲mv大片欧洲mv大片免费 | 亚洲精品免费在线播放 | 欧美精品久久久久 | 开心激情婷婷 | 岛国av在线免费 | 亚洲精品久 | 久久男人中文字幕资源站 | 久久精品导航 | 97人人人| 国产在线自 | 中国美女一级看片 | 五月开心色| 国产精品一区久久久久 | 免费99精品国产自在在线 | 一区二区三区久久 | www.99av| 婷婷伊人综合亚洲综合网 | 成年人三级网站 | 国产精品黄 | 国产中文字幕在线看 | 香蕉视频国产在线观看 | 一区二区欧美激情 | 在线黄色免费 | 黄色一级免费电影 | 91精品一区二区在线观看 | 中文字幕在线观看第一页 | 亚洲电影av在线 | 97操操操 | 狠狠色丁香婷婷综合视频 | 亚洲精品久久久久中文字幕二区 | 久久黄色网址 | 日韩av一卡二卡三卡 | 99在线播放 | 久草在线播放视频 | 正在播放日韩 | 天天操天天添天天吹 | 国产成人高清 | v片在线播放 | www.亚洲视频.com| 色www永久免费 | 国产男女无遮挡猛进猛出在线观看 | 欧美一级久久 | 国产精品国产三级国产aⅴ无密码 | 成人免费观看完整版电影 | 亚洲视频在线观看网站 | 97久久久免费福利网址 | 美女视频网站久久 | 免费在线视频一区二区 | 99久热在线精品 | 99久久网站 | 97品白浆高清久久久久久 | 91在线播放国产 | 久久国产一二区 | 美女一级毛片视频 | 欧美性黄网官网 | 婷婷色综合 | 少妇18xxxx性xxxx片 | 国产麻豆视频网站 | 91一区啪爱嗯打偷拍欧美 | 精品国产一区二区三区四区vr | 在线亚洲高清视频 | 日韩欧美91 | 久久成人在线 | 黄色免费视频在线观看 | 国产精品手机在线 | 国产伦精品一区二区三区照片91 | 欧美91在线| 久久视频精品在线观看 | 国产精品 视频 | 中国一区二区视频 | 在线观看一区二区视频 | 欧美一级免费高清 | 九九热久久久 | 成人中文字幕+乱码+中文字幕 | 91成年人视频 | 丁香婷婷综合激情 | 久久久96 | 日韩av手机在线看 | 在线观看久久 | 日批视频在线播放 | 成人午夜精品久久久久久久3d | 欧美专区亚洲专区 | 最近字幕在线观看第一季 | 日日夜夜天天 | 黄www在线观看 | 亚洲成a人片综合在线 | 亚洲成a人片在线观看网站口工 | 成年人国产视频 | 国产一区二区在线免费播放 | 国产98色在线 | 日韩 | 少妇bbw撒尿 | 超级碰碰免费视频 | 日韩理论电影网 | 中文字幕一区二区在线播放 | 美女久久久久久久 | 久久五月情影视 | 一级欧美一级日韩 | 激情在线免费视频 | 97视频在线观看视频免费视频 | 亚洲国产免费看 | 超碰在线个人 | 夜夜躁天天躁很躁波 | 成人91av| 婷婷av色综合 | 毛片播放网站 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 久久激情视频 久久 | 欧美久久久久久久久久久久久 | 国产亲近乱来精品 | 又黄又刺激的网站 | 亚洲不卡123 | 免费观看的黄色片 | 亚洲精品一区二区三区在线观看 | 激情五月五月婷婷 | 国产99在线播放 | 欧美a性 | 成人小电影在线看 | 国产精品久久久亚洲 | 精品专区 | 国产精品视频免费在线观看 | 24小时日本在线www免费的 | 人人干网站 | 成年人免费看片 | 国产成人免费网站 | 中文字幕国产在线 | 欧美日韩精品在线免费观看 | 丁香5月婷婷久久 | 国产精品日韩久久久久 | 人人添人人 | 婷婷四房综合激情五月 | 久久96国产精品久久99漫画 | 国产日韩欧美在线 | 精品久久久久久综合日本 | 亚洲精品久久久久58 | va视频在线 | 日日夜夜精品网站 | 日韩黄色一级电影 | 天天干天天摸天天操 | 成人av免费 | 五月婷综合 | 91精品啪| 爱射综合 | 国产999精品久久久 免费a网站 | 91精品免费在线观看 | 久久字幕精品一区 | 91福利视频免费观看 | 国产亚洲免费观看 | 国产成人精品av | 久久不见久久见免费影院 | 久久视频免费在线观看 | 国产成人久久精品 | 久久久国产精品网站 | 欧美另类xxx| 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 国产在线观看免费观看 | 国产福利91精品一区 | 香蕉成人在线视频 | www.国产在线观看 | 香蕉视频啪啪 | 欧美性大战 | 国产黄色资源 | 成av在线| 免费a视频 | 日韩欧美在线综合网 | 成人av免费在线播放 | 9在线观看免费高清完整 | av成人黄色| 亚洲电影久久 | 在线日韩精品视频 | 一级片免费在线 | 在线观看亚洲电影 | 成人免费在线观看电影 | 色综合五月 | 久久国产综合视频 | 蜜桃久久久| 国产精品毛片一区二区三区 | 天天爱综合| 国产精品午夜久久久久久99热 | 久久久国产在线视频 | 欧美激情一区不卡 | 国产精品免费久久久久 | 国产一区二区三区在线免费观看 | 精品av网站| 久产久精国产品 | 国产高清中文字幕 | 96精品在线| 亚洲综合激情五月 | 日日成人网 | 97在线视频免费观看 | 亚洲精品久久久蜜桃直播 | 婷婷伊人网 | 日日夜夜狠狠操 | 99riav1国产精品视频 | 五月天综合色激情 | 视频在线99 | 国产成人99久久亚洲综合精品 | 国产久视频 | 久草网在线视频 | 国产日本高清 | 久久女同性恋中文字幕 | 国产福利久久 | av一级一片 | 精品在线免费观看 | 视频精品一区二区三区 | 亚洲精品777 | 日本三级人妇 | av在线电影网站 | 亚洲涩涩网站 | 亚洲伦理一区二区 | 日韩高清免费在线观看 | 日韩精品一区二区三区在线播放 | 午夜av大片 | 青草视频免费观看 | av免费在线看网站 | www.伊人网| 亚洲毛片一区二区三区 | 又爽又黄又刺激的视频 | 亚洲电影免费 | 操操日日 | av日韩av| 婷婷激情综合五月天 | 奇米网网址 | 三级免费黄色 | 69中文字幕 | 精品一区二区在线播放 | 欧美国产不卡 | 欧美a级一区二区 | av线上看| 日韩小视频 | 99在线精品视频在线观看 | 国产一区二区三区视频在线 | 日本黄区免费视频观看 | 日韩精品字幕 | 色狠狠综合天天综合综合 | 国产高清在线a视频大全 | 在线观看久草 | 天天射天天干天天插 | 91手机视频 | 欧美aa在线 | 丝袜av网站 | 在线观看aa | 五月婷婷综合激情网 | 超碰成人免费电影 | 2022国产精品视频 | 久久国产电影 | 激情综合亚洲 | www.色综合.com | 婷婷在线不卡 | 国产日韩欧美网站 | 久久精品国产免费看久久精品 | 色婷久久| 亚洲一区视频免费观看 | 国产一区二区高清视频 | 亚洲免费永久精品国产 | 18岁免费看片 | 国产区在线看 | 亚洲 av网站 | 黄色亚洲大片免费在线观看 | 欧美在线99| 四虎成人免费观看 | 久久资源总站 | 国产一区二区在线免费播放 | 伊人狠狠色丁香婷婷综合 | 999电影免费在线观看 | 久久国产免费看 | 欧美精品免费在线 | 成人手机在线视频 | 国产精品免费一区二区 | 免费在线91| 免费av片在线 | 亚洲黄色精品 | 中文字幕在线观看第一页 | 久久精品综合视频 | 国产成人久久 | 视频一区二区免费 | 国产免码va在线观看免费 | 色综合人人 | 99精品国产视频 | 成人久久18免费网站麻豆 | 久久亚洲人| 黄色av网站在线免费观看 | 中文字幕高清视频 | 日韩午夜在线播放 | 国产婷婷色 | 超碰97中文 | 99九九免费视频 | 日韩av片无码一区二区不卡电影 | 日韩在线观看影院 | 99这里都是精品 | 国产精品一区二区在线观看免费 | 成人久久18免费网站麻豆 | 日韩精品免费 | 在线激情小视频 | 狠狠色丁香婷婷综合 | 成人毛片在线观看 | 中文字幕免费高清av | 蜜臀av.com| 日韩美女av在线 | 日一日操一操 | 香蕉视频啪啪 | 久草在线观 | 免费高清在线观看成人 | 免费在线黄色av | 免费视频一区 | 国产黄色片一级 | 国产精品日韩高清 | 久久av中文字幕片 | 中文字幕高清视频 | 成人一区二区在线观看 | 日本成人黄色片 | 国产五月色婷婷六月丁香视频 | 婷久久| aaa日本高清在线播放免费观看 | 亚洲va综合va国产va中文 | 97超碰成人| 狠狠躁夜夜躁人人爽超碰97香蕉 | 顶级欧美色妇4khd | 久久日本视频 | 91av免费观看| 伊人热| 中文在线√天堂 | 在线日韩中文 | 黄p网站在线观看 | 日日干网 | 日韩欧美综合视频 | 国产日韩欧美综合在线 | 天天操天天色天天射 | www.黄色| 日本公乱妇视频 | 亚洲日本成人 | 免费看的黄色片 | 亚洲区另类春色综合小说 | 国产一区在线视频 | 99在线精品视频 | 精品国产一区二区三区久久久蜜月 | 色www精品视频在线观看 | 国产一区在线观看免费 | 日本高清久久久 | 日韩在线欧美在线 | 国产精品久久久久久电影 | 人人插人人草 | 狠狠插天天干 | 亚洲精品国久久99热 | 日日日干 | www.久久视频 | 97视频网站| 中文字幕中文字幕在线一区 | 国产精品午夜在线观看 | 亚洲天堂精品视频 | 日日夜夜天天综合 | 国产一区二区不卡视频 | 一本一本久久a久久精品综合小说 | 日韩视频免费在线 | 精品在线观看一区二区 | 欧美日韩亚洲精品在线 | 色综合天天综合在线视频 | 成人免费观看在线视频 | 美女视频黄免费 | 中文字幕资源在线观看 | 久久不见久久见免费影院 | 欧美日韩一区二区在线 | 在线观看深夜福利 | 在线观看韩日电影免费 | 免费观看一区二区三区视频 | 国产一级特黄电影 | 亚洲精品999| 美女网站在线观看 | 成人在线观看免费视频 | av激情五月 | 国产网红在线 | 一级电影免费在线观看 | 国产精品入口a级 | 免费亚洲视频 | 久久都是精品 | 色综合天天爱 | 日韩激情小视频 | 免费中午字幕无吗 | 国产999在线观看 | 久久久久久免费视频 | 天天鲁一鲁摸一摸爽一爽 | 免费网站在线 | 97超碰中文 | 亚洲天天综合网 | 激情五月开心 | 人人澡人 | 日韩一区二区免费在线观看 | 亚洲精品女人久久久 | 精品亚洲男同gayvideo网站 | 久久久久国产a免费观看rela | av综合网址 | 992tv成人免费看片 | 顶级bbw搡bbbb搡bbbb | 91九色在线| 99这里只有精品视频 | 四虎国产| 中文字幕国产视频 | 国产99免费视频 | 欧美另类巨大 | 国产男男gay做爰 | 天堂av在线中文在线 | 91人人澡人人爽人人精品 | 欧美激情第28页 | 久久精品草 | 黄网站色 | www.久久久 | 久久99国产精品 | 天天色视频 | 国产热re99久久6国产精品 | 亚洲成人在线免费 | 黄污网站在线 | 友田真希av| 四虎影视精品成人 | 国产一级久久久 | 91久久精品一区二区三区 | 亚洲一级电影在线观看 | 国产一区二区在线免费视频 | 伊甸园永久入口www 99热 精品在线 | 九色91在线| 五月天婷婷综合 | 日韩亚洲国产中文字幕 | 黄色亚洲大片免费在线观看 | 高清不卡免费视频 | 久久综合精品一区 | 精品久久九九 | 午夜av一区二区三区 | 91精彩视频 | 手机av电影在线观看 | 亚洲午夜精品一区 | 成人毛片在线视频 | 香蕉在线视频播放网站 | 精品av网站 | 免费福利片 | 国产不卡av在线 | 久久不色| 丁香六月国产 | 97在线精品视频 | 日韩免费一区二区三区 | 欧美一级免费 | 伊人伊成久久人综合网站 | 欧美激情视频一区二区三区免费 | 日韩精品一区二 | 亚洲 中文 在线 精品 | 国产三级精品在线 | 玖玖在线免费视频 | 精品女同一区二区三区在线观看 | 成人在线免费观看网站 | 夜夜骑日日 | 高清免费在线视频 | 正在播放五月婷婷狠狠干 | 国产精品久久久久久久久毛片 | 午夜黄色大片 | 四虎天堂| 亚洲黄色成人网 | av高清在线观看 | 在线激情小视频 | 成年人视频在线免费观看 | 精品久久影院 | 欧美精品一区二区蜜臀亚洲 | 最新av免费在线 | av电影 一区二区 | 久久久 激情 | 国产成人三级在线播放 | 日本久久久久久科技有限公司 | 亚洲色综合 | 久久久国产影院 | 国产精品成人自产拍在线观看 | 国产视频 亚洲视频 | 狠狠操操操 | 久久国产高清 | 综合色婷婷 | 美女久久久久久久久久久 | 色婷婷六月天 | 狠狠地操 | 日本三级中文字幕在线观看 | 亚洲综合色视频 | 欧美激情精品久久久久久变态 | japanesexxx乱女另类| 国产精品久久久久999 | 国产亚洲成人网 | 日韩欧美视频在线播放 | 日韩成人免费电影 | 日韩久久精品一区二区三区 | 99热播精品 | 精品伊人久久久 | 91九色视频国产 | 国产精品亚洲视频 | 99爱视频在线观看 | 欧美99热 | 久久不见久久见免费影院 | 男女全黄一级一级高潮免费看 | 久久久久一区 | 欧美亚洲国产精品久久高清浪潮 | 免费视频18 | 日韩 精品 一区 国产 麻豆 | 精品国产视频在线观看 | 日韩色综合网 | 免费观看成年人视频 | 91大神免费在线观看 | 美女精品在线 | 日韩二区三区 | 国产乱视频 | 久久怡红院| 精品亚洲一区二区 | 亚洲精品久久久久999中文字幕 | 成年人视频在线 | 国产精品久久久久久久久免费 | 一区二区三区精品久久久 | 精品国产区在线 | 97超碰色| 国产九九精品视频 | 久热久草 | 91少妇精拍在线播放 | 国产精品久久久久久久久久久久午夜片 | www免费网站在线观看 | 一区二区三区视频 | 五月天激情电影 | 欧美一区二区三区在线 | 成人资源站 | 久久精品aaa | 久久久久中文字幕 | 丁香电影小说免费视频观看 | 久久在线视频在线 | 91视频在线免费下载 | 亚洲一区免费在线 | 欧美一区二区精美视频 | 青青河边草免费观看完整版高清 | 999久久久久久久久6666 | 国产码电影 | 久久久久亚洲精品男人的天堂 | 久久国产经典视频 | 天无日天天操天天干 | 日韩成人黄色 | 国产精品地址 | 久久久久伊人 | 2023亚洲精品国偷拍自产在线 | 丁香六月婷婷开心婷婷网 | 国产99久久精品一区二区300 | 午夜影院先 | 久久国产精品色av免费看 | 久久综合天天 | 久草在线网址 | 日韩亚洲精品电影 | 色哟哟国产精品 | 色中文字幕在线观看 | 久草在线| 天天操偷偷干 | 手机看片国产 | 国产福利a | 久久免费激情视频 | 日韩91精品 | 久久综合婷婷国产二区高清 | 日韩欧美精品在线视频 | 午夜精品福利一区二区 | 麻豆av一区二区三区在线观看 | 日本在线观看一区二区三区 | 婷婷丁香av | 色小说在线| 麻豆免费视频网站 | 亚洲自拍偷拍色图 | 国产成人综合精品 | 午夜精品电影 | 久久久久久久久电影 | 一级黄色片在线观看 | 欧美一级黄大片 | 91热视频在线观看 | 国内精品久久久久久久影视简单 | 中文字幕a∨在线乱码免费看 | 国产精品久久三 | 日韩欧美精品在线视频 | 成年人免费观看在线视频 | 久草视频在线新免费 | 亚洲天堂精品 | 久久免费国产精品 | av免费电影网站 | 中中文字幕av在线 | 成人网页在线免费观看 | 欧美日韩免费在线观看视频 | 天天做日日做天天爽视频免费 | 日韩欧美国产成人 | 国产精品久久久久久高潮 | 51久久成人国产精品麻豆 | 97久久精品午夜一区二区 | 久久精品直播 | 玖玖视频网 | 亚洲国产wwwccc36天堂 | 美女国产免费 | 国产精品人人做人人爽人人添 | 中文字幕免费在线 | 人人爽人人爽人人片av免 | 欧美在线18| 国色天香第二季 | 啪啪av在线 | 日韩精品三区四区 | 狠狠gao | 国内精品在线一区 | 成人在线视频在线观看 | 亚洲综合视频在线 | 亚洲精品 在线视频 | 黄色大片av| 欧洲精品视频一区二区 | 手机成人在线电影 | 最新国产精品久久精品 | 欧美孕交vivoestv另类 | 成人a毛片 | 国产一区二区在线免费 | 欧美精品一区二区性色 | 亚洲人成人天堂h久久 | 亚洲在线视频观看 | 日韩精品久久久免费观看夜色 | 四虎在线永久免费观看 | 日韩毛片在线一区二区毛片 | 日日夜夜操操操操 | 嫩草91影院| 日韩黄色在线观看 | 草樱av | 97在线观看 | 探花视频在线观看 | 久久精品国产一区二区电影 | 丁香五月网久久综合 | 国产99久久久国产精品免费二区 | 国产99久久久国产精品 | 日本最新中文字幕 | 99精品色 | 日韩免费视频播放 | 亚洲精品视频在 | 干狠狠 | 亚洲国产精品成人女人久久 | 96亚洲精品久久 | bbb搡bbb爽爽爽| 日日夜夜天天久久 | 国产一区二区三区免费视频 | 久久精品视频在线观看 | 91精品视频免费看 | 中文字幕日韩无 | 午夜精品999 | 丝袜美腿亚洲 | 亚洲天堂精品视频 | 在线观看mv的中文字幕网站 | www.国产毛片| 久久久夜色 | 久久国产精品网站 | 婷婷六月丁| av电影不卡| 成人久久久精品国产乱码一区二区 | 探花视频免费在线观看 | 天天草视频 | 国产成人精品一区二区在线 | 91九色视频导航 | 永久免费毛片在线观看 | 91麻豆产精品久久久久久 | 亚洲精品中文字幕视频 | 亚洲少妇激情 | 操高跟美女 | 亚洲成人精品影院 | 久久久久成人精品 | 四虎天堂 | 18久久久久 | 在线一区观看 | 一级片免费在线 | 精品亚洲欧美无人区乱码 | 伊人激情综合 | 国产人在线成免费视频 | 中文字幕在线不卡国产视频 | 欧美乱熟臀69xxxxxx | 国产在线视频资源 | 国产精品久久久久久久久蜜臀 | 在线v片免费观看视频 | 2019中文最近的2019中文在线 | 亚洲最大免费成人网 | 一区二区三区中文字幕在线 | 在线三级av| 视频在线观看一区 | 色综合五月天 | 国产小视频在线观看免费 | 久久情爱| 丁香视频全集免费观看 | 国产亚洲精品女人久久久久久 | 精品电影一区 | 激情网综合| 日韩一级成人av | 亚洲精色 | 永久免费观看视频 | 成人一级 | 日日干天夜夜 | 一区二区三区中文字幕在线观看 | zzijzzij日本成熟少妇 | 久久艹精品 | 99热这里| 在线播放日韩av | 色婷婷国产 | 日韩在线免费看 | 中文字幕亚洲欧美日韩2019 | 欧美一区日韩精品 | 97精品视频在线播放 | 亚洲国产精品人久久电影 | 国产精品自在欧美一区 | 最新国产精品久久精品 | 天天爽夜夜爽人人爽曰av | 色婷婷综合久久久中文字幕 | 午夜12点 | 免费精品视频在线观看 | 久久久精品国产免费观看同学 | 国产精品久久久久一区二区三区 | 免费日韩在线 | 精品女同一区二区三区在线观看 | 精品一区二区在线免费观看 | 九草视频在线 | 久久艹免费 | 天天操天天能 | 91在线视频免费 | 欧美日韩午夜爽爽 | 99精品在线免费在线观看 | 久久久国产在线视频 | 91激情视频在线观看 | 久久人人爽人人爽人人片 | 五月婷婷久久丁香 | 国产在线国偷精品产拍免费yy | 欧美精品中文字幕亚洲专区 | 国产黄在线看 | 国产精品久久免费看 | 麻豆91视频 | 婷婷视频导航 | 97免费视频在线播放 | 中文字幕日韩国产 | 美女一区网站 | 欧美一级专区免费大片 | 久久精品免费播放 | 在线看片成人 | 一区二区毛片 | 久久超碰在线 | 六月天色婷婷 | 日韩久久影院 | 国产在线a免费观看 | 五月综合 | 色网站在线| 国产精品11 | 国产一级大片在线观看 | 欧美一区二区三区四区夜夜大片 | 日本福利视频在线 | 国产一区二区免费看 | 天堂va欧美va亚洲va老司机 | 麻豆网站免费观看 | 免费看黄视频 | 日韩欧美精品免费 | 色综合网在线 | 日韩特黄一级欧美毛片特黄 | 亚洲三级精品 | 天天色天天操综合 | 色综合人人| 91av视频免费观看 | 国产污视频在线观看 | 日韩大片在线免费观看 | 免费 在线 中文 日本 | 色婷婷狠狠五月综合天色拍 | 亚洲jizzjizz日本少妇 | 92av视频| 精品国产乱码久久久久久1区二区 | www.黄色片网站| 精品国模一区二区 | 中文字幕视频 | 成片视频免费观看 | 国产精品久久久久9999吃药 | 99亚洲精品在线 | 国内外成人免费在线视频 | 日本久久视频 | 天天操天操 | 午夜视频亚洲 | 特级xxxxx欧美| av在线超碰| 亚洲国产成人在线播放 | 成人黄色视 | 在线观看av片 | 黄色国产高清 | 91少妇精拍在线播放 | 人人插人人澡 | 在线观看 国产 | 国产高清免费在线观看 | 久久久久欧美精品 | 国产色综合 | 亚洲欧美经典 | 免费看久久 | 免费av网址大全 | 最新高清无码专区 | 国产精品99久久久久久武松影视 | 韩国一区二区在线观看 | 亚洲精品久久久久中文字幕二区 | 国产又黄又爽无遮挡 | 亚洲好视频 | 色多多视频在线观看 | 999视频精品| 人人看人人 | 美女黄频网站 | 91免费看黄色 | av片子在线观看 | 日本精品一区二区三区在线播放视频 | 日韩黄在线观看 | 免费看日韩 | 永久精品视频 | 一区二区三区国 | av东方在线 | 久久久久国产精品免费 | 国产不卡在线观看视频 | 天天操人人干 | 激情婷婷色 | 天天爽综合网 | 亚洲91精品在线观看 | 精品国产中文字幕 | 国产欧美精品一区二区三区四区 | 亚洲成人av片在线观看 | 久久精品国产一区二区电影 | 国产 成人 久久 | 视频在线一区 | 久久综合国产伦精品免费 | 精品国产一区二区三区噜噜噜 | 免费观看www小视频的软件 | 在线国产视频观看 | 国产精品一区免费观看 | 日韩精品最新在线观看 | 高清av网站| 99精品国产高清在线观看 | 成人精品视频久久久久 | 波多野结衣电影久久 | 天天做日日爱夜夜爽 | 99综合视频 | 国精产品999国精产品岳 | 日韩av在线小说 | 在线91视频 | 91人人澡 | 日韩欧美高清一区二区 | 人人干免费 | 在线观看91av | 精品久久久久亚洲 | 综合久久2023| 午夜在线日韩 | 国产成人一级电影 | 久草视频在线免费看 | 在线观看不卡视频 | 黄色大全免费观看 | 欧美狠狠操 | 成年人看片 | 成人国产精品久久久春色 | av成人亚洲 | 久久精选 | 中文字幕日韩高清 | 亚洲专区一二三 | 久久久久久久久久久久亚洲 | 国内精品久久影院 | 激情婷婷综合 | 日韩av免费观看网站 | 日本高清中文字幕有码在线 | 国产视频精品久久 | 免费看的黄网站 | 免费观看91视频 | 五月激情天 | www.狠狠 | 伊人黄色网 | 国产精品久久久久久久久蜜臀 | 欧美高清视频不卡网 | 久久国产精品99久久久久久老狼 | 日韩视频中文 | 日韩在线一区二区免费 | 日批在线看 | 欧美一进一出抽搐大尺度视频 | 日韩二区三区在线 | av在线播放一区二区三区 | 丝袜一区在线 | 国内成人av| 91亚洲精品在线 | av大全在线免费观看 | 成年人免费看片 | 欧美va天堂在线电影 | 国产在线播放一区 | v片在线播放 | 特级xxxxx欧美| 国产香蕉av | 久久综合婷婷 | 91大神在线观看视频 | 黄色软件在线观看视频 | 日本性生活一级片 | 日韩视频一区二区三区 | 日韩在线观| 日韩1级片 | 国产精品99久久久久人中文网介绍 | 亚洲 欧洲av | 偷拍区另类综合在线 | 久久精品中文字幕一区二区三区 | 欧美午夜视频在线 | 中文字幕亚洲情99在线 | 91精品国产91久久久久福利 | 国产精品色在线 | 最近日本字幕mv免费观看在线 | 日韩理论影院 | 久久黄色小说 | 丁香六月久久综合狠狠色 | 在线中文字幕观看 | 婷婷网站天天婷婷网站 | 午夜精品久久久久久久99 | 精品国偷自产国产一区 | 国产青春久久久国产毛片 | 天天射天天干 | 欧美激情综合五月色丁香 | 亚洲精品福利在线观看 | 91精品成人久久 | 九月婷婷色 | 久久噜噜少妇网站 | 97超碰人人澡人人爱学生 | 久久免费电影网 | 亚洲区精品视频 | 精品国产一区二区三区在线 | 欧美日韩三级在线观看 | 国内精品免费久久影院 | 亚洲成年人在线播放 | 久久99精品久久只有精品 | 国产精品久久在线 | 国产精品高潮在线观看 | 中文字幕在线一区二区三区 | 99视频精品免费观看, | a视频在线播放 | 99在线视频精品 | 午夜av不卡| 成人av电影在线播放 | 片网址| 免费在线一区二区三区 | 午夜精品久久久久久中宇69 | 国产精品久久久久久久久久ktv | 精品a在线| 中文字幕中文字幕在线一区 | 午夜在线观看一区 | 精品理论片 | 久久99精品国产99久久6尤 | 成人久久影院 | 中文字幕一区二区三区乱码不卡 | 国产麻豆精品久久一二三 | 视频在线观看入口黄最新永久免费国产 | 亚洲影视资源 | 午夜精品视频一区二区三区在线看 | 黄色免费av | 亚洲国产精品人久久电影 | 欧美 日韩 成人 | 天天操天天干天天操天天干 | 中文字幕视频 | 亚洲精品久久在线 | 黄色aaaaa| 亚洲一区二区三区在线看 | 久久草草热国产精品直播 | 色综合久久中文字幕综合网 | 激情综合电影网 | 国产一区二区在线观看视频 | 国产黄免费在线观看 | 久久综合狠狠综合 | 精品日本视频 | 久久久电影网站 | 久久久麻豆视频 | 精品视频国产 | 久久香蕉国产精品麻豆粉嫩av | 日韩精品一区二区三区三炮视频 | 99久久久久成人国产免费 | 亚洲综合欧美激情 | 91精品国产福利 | 99久久国产免费看 | 国产精品一区二区三区四区在线观看 | 国产中文视频 | 波多野结衣在线观看视频 | 在线免费精品视频 |