日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java_basic_review(5)java反射荔枝

發(fā)布時(shí)間:2023/12/3 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java_basic_review(5)java反射荔枝 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【0】README

1)本文旨在 review?java反射荔枝;


【1】荔枝如下

【2】實(shí)例化Class類對(duì)象

@Test // 實(shí)例化Class類對(duì)象public void testInitializeClassObject() {Class c1;Class c2;Class c3;try {c1 = Demo.class; // way1.c2 = new Demo().getClass(); // way2.c3 = Class.forName("com.basic.reflection.Demo"); // way3.System.out.println(c1);System.out.println(c2);System.out.println(c3);System.out.println(c3.getName());} catch (Exception e) {e.printStackTrace();}/*** class com.basic.reflection.Demo* class com.basic.reflection.Demo* class com.basic.reflection.Demo* com.basic.reflection.Demo*/}

【3】返回一個(gè)類實(shí)現(xiàn)的接口

@Test // 返回一個(gè)類實(shí)現(xiàn)的接口public void testGetInstancesImplemented() {Class c1;try {c1 = Triangle.class;Class[] interfaces = c1.getInterfaces();for (Class temp: interfaces) {System.out.println(temp.getName());}// com.basic.reflection.Shape} catch (Exception e) {e.printStackTrace();}}// Class 類的 getDeclareFields、getDeclareMethods、getDeclaredConstructors // 方法將分別返回類中聲明的全部域、方法和構(gòu)造器;其中包括私有方法和受保護(hù)成員,但不包括超類成員.

【4】利用反射分析類的能力

@Test // 利用反射分析類的能力public void testAnalyzeClass() {Class c1;try {c1 = Triangle.class;Field df1 = c1.getDeclaredField("width");df1.setAccessible(true);System.out.println(df1.getName()); // width.Triangle t = new Triangle(1000, "i am a triangle.");int age = df1.getInt(t);System.out.println(age); // 1000Method m1 = c1.getDeclaredMethod("sayShape", new Class[]{String.class, int.class});m1.invoke(t, new Object[]{"i am a triangle", 9999}); // 調(diào)用方法.// sayShape() -> i am a triangle 9999 } catch (Exception e) {e.printStackTrace();}}

【5】實(shí)例化對(duì)象

@Test // 實(shí)例化對(duì)象public void testInstanceObject() {Class c1;try {c1 = Class.forName("com.basic.reflection.Demo");Demo d1 = (Demo)c1.newInstance(); // 調(diào)用默認(rèn)構(gòu)造器System.out.println(d1.getIntField()); // 1// 利用構(gòu)造器創(chuàng)建對(duì)象實(shí)例(推薦).Constructor con = c1.getDeclaredConstructor(new Class[]{int.class, String.class});Demo d2 = (Demo) con.newInstance(new Object[]{110, "110"});System.out.println(d2.getIntField() + d2.getStrField()); // 110110} catch (Exception e) {e.printStackTrace();}} 【6】通過(guò)反射取得并修改數(shù)組的信息 @Test // 通過(guò)反射取得并修改數(shù)組的信息public void testOperateArray() {int[] array = {1, 1, 0};Class<?> demo = array.getClass().getComponentType(); // 數(shù)組類型的Class對(duì)象.out.println("array type = " + demo.getName()); // 數(shù)組類型為int.out.println("array length = " + Array.getLength(array)); out.println("1st element in array = " + Array.get(array, 0)); // 通過(guò)下標(biāo)取得數(shù)組元素Array.set(array, 0, 100); //修改數(shù)組的第一個(gè)元素為100(下標(biāo)為0)out.println("after modification, 1st element in array is " + Array.get(array, 0));} /* output.array type = intarray length = 31st element in array = 1after modification, 1st element in array is 100*/// 通過(guò)反射修改數(shù)組大小public static Object modifyArraySize(Object obj, int start, int newLen) {int oldLen = Array.getLength(obj);Class<?> arrayType = obj.getClass().getComponentType();Object newArray = Array.newInstance(arrayType, newLen);newLen = newLen > oldLen ? oldLen : newLen;System.arraycopy(obj, start, newArray, 0, newLen);return newArray;}public static void print(Object obj) {int length = Array.getLength(obj);Class<?> c = obj.getClass();if(!c.isArray())return ;out.println("array length :" + length);for (int i = 0; i < length; i++)out.print(Array.get(obj, i) + " "); // Array.get(obj, i) == obj[i] }@Test// modify the size of arraypublic void testModifyArraySize() {int[] array = {1, 7, 6, 0, 8};int[] newArray = (int[])modifyArraySize(array, 0, 3);System.out.println("after modifying the array size to 3.");for(int i : newArray) {out.print(i + " ");}out.println();print(newArray);newArray = (int[])modifyArraySize(array, 0, 8);//當(dāng)新數(shù)組長(zhǎng)度大于原始數(shù)組長(zhǎng)度的時(shí)候System.out.println("after modifying the array size to 8.");print(newArray);} // 通過(guò)反射修改數(shù)組大小 over. /*after modifying the array size to 3.1 7 6 array length :31 7 6 after modifying the array size to 8.array length :81 7 6 0 8 0 0 0 */

總結(jié)

以上是生活随笔為你收集整理的java_basic_review(5)java反射荔枝的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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