摘要:知識(shí)點(diǎn)總結(jié)反射通過(guò)反射操作類的屬性和方法知識(shí)點(diǎn)總結(jié)反射使用反射操作類的屬性和方法通過(guò)反射調(diào)用構(gòu)造方法,構(gòu)造對(duì)象其實(shí)調(diào)用無(wú)參構(gòu)造器張三調(diào)用有參構(gòu)造器李四通過(guò)反射調(diào)用普通方法獲取方法激活方法王武王武通過(guò)反射操作屬性是屬性,如果不寫會(huì)這個(gè)私有屬
Java知識(shí)點(diǎn)總結(jié)(反射-通過(guò)反射操作類的屬性和方法 )
@(Java知識(shí)點(diǎn)總結(jié))[Java, 反射]
使用反射操作類的屬性和方法:
import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class Test03 { // 通過(guò)反射API調(diào)用構(gòu)造方法,構(gòu)造對(duì)象 public static void getInstance(Class clazz){ Student student; try { student = (Student) clazz.newInstance(); // 其實(shí)調(diào)用無(wú)參構(gòu)造器 student.setName("張三"); System.out.println(student.getName()); } catch (InstantiationException | IllegalAccessException e) { e.printStackTrace(); } try { Constructor c = clazz.getDeclaredConstructor(int.class, String.class);// 調(diào)用有參構(gòu)造器 Student student2 = (Student) c.newInstance(1, "李四"); System.out.println(student2.getName()); } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } } // 通過(guò)反射API調(diào)用普通方法 public static void method(Class clazz) { try { Student student = (Student) clazz.newInstance(); // 獲取方法 Method method = clazz.getDeclaredMethod("setName", String.class); // 激活方法 method.invoke(student, "王武"); // student.setName("王武"); System.out.println(student.getName()); } catch (InstantiationException | IllegalAccessException | NoSuchMethodException | SecurityException | IllegalArgumentException | InvocationTargetException e) { e.printStackTrace(); } } //通過(guò)反射API操作屬性 public static void field(Class clazz){ try { Student student = (Student) clazz.newInstance(); Field f1 = clazz.getDeclaredField("name"); // name 是private屬性,如果不寫會(huì):IllegalAccessException f1.setAccessible(true); // 這個(gè)私有屬性不用做安全檢查了,可以直接訪問(wèn) f1.set(student, "趙六"); Field f2 = clazz.getDeclaredField("sex"); // sex 是public 屬性,不用忽略安全檢查 f2.set(student, "男"); for (Field f : clazz.getDeclaredFields()) { f.setAccessible(true); System.out.println(f.get(student)); //注意參數(shù)是對(duì)象名,而不是屬性名 } } catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException | InstantiationException e) { e.printStackTrace(); } } public static void main(String[] args) { String path = "com.gs.Student"; try { Class clazz = Class.forName(path); //getInstance(clazz); //method(clazz); field(clazz); } catch (Exception e) { e.printStackTrace(); } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/71577.html
摘要:知識(shí)點(diǎn)總結(jié)反射介紹知識(shí)點(diǎn)總結(jié)反射反射程序在運(yùn)行狀態(tài)中,可以動(dòng)態(tài)加載一個(gè)只有名稱的類動(dòng)態(tài)調(diào)用類的所有屬性和方法加載完類之后,在堆內(nèi)存中,就產(chǎn)生了一個(gè)類型的對(duì)象一個(gè)類只有一個(gè)對(duì)象。 Java知識(shí)點(diǎn)總結(jié)(反射-介紹) @(Java知識(shí)點(diǎn)總結(jié))[Java, 反射] 反射 程序在 運(yùn)行狀態(tài)中 ,可以動(dòng)態(tài)加載一個(gè)只有名稱的類 (動(dòng)態(tài)調(diào)用類的所有屬性和方法)Class c = Class.for...
摘要:知識(shí)點(diǎn)總結(jié)反射獲取類的信息知識(shí)點(diǎn)總結(jié)反射應(yīng)用反射的,獲取類的信息類的名字屬性方法構(gòu)造器等獲取類名類的全路徑名稱類名獲取屬性信息只能獲取的屬性獲取所有的屬性根據(jù)屬性名稱獲取屬性根據(jù)屬性名稱獲取屬性獲取方法信息獲取所有的方法,包括父類的方法獲 Java知識(shí)點(diǎn)總結(jié)(反射-獲取類的信息) @(Java知識(shí)點(diǎn)總結(jié))[Java, 反射] 應(yīng)用反射的API,獲取類的信息(類的名字、屬性、方法、構(gòu)造器...
摘要:通過(guò)反射獲取無(wú)參構(gòu)造方法并使用得到無(wú)參構(gòu)造方法獲取所有的修飾的構(gòu)造方法。如果方法沒(méi)有返回值,返回的是反射獲取空參數(shù)成員方法并運(yùn)行代碼演示反射獲取成員方法并運(yùn)行獲取對(duì)象中的成員方法獲取的是文件中的所有公共成員方法包括繼承的類是描述 01類加載器 * A.類的加載 當(dāng)程序要使用某個(gè)類時(shí),如果該類還未被加載到內(nèi)存中,則系統(tǒng)會(huì)通過(guò)加載,連接,初始化三步來(lái)實(shí)現(xiàn)對(duì)這個(gè)類進(jìn)行初始化。 ? ...
摘要:通過(guò)反射獲取帶參無(wú)返回值成員方法并使用設(shè)置安全檢查,訪問(wèn)私有構(gòu)造函數(shù)必須創(chuàng)建實(shí)例這種不行,注意和方法需要傳遞參數(shù)測(cè)試復(fù)制這個(gè)功能獲取私有方法,同樣注意和的區(qū)別賦予訪問(wèn)權(quán)限調(diào)用方法。 反射 目錄介紹 1.反射概述 1.1 反射概述 1.2 獲取class文件對(duì)象的三種方式 1.3 反射常用的方法介紹 1.4 反射的定義 1.5 反射的組成 1.6 反射的作用有哪些 2.反射的...
摘要:與都繼承自類,在中也是使用字符數(shù)組保存字符串,,這兩種對(duì)象都是可變的。采用字節(jié)碼的好處語(yǔ)言通過(guò)字節(jié)碼的方式,在一定程度上解決了傳統(tǒng)解釋型語(yǔ)言執(zhí)行效率低的問(wèn)題,同時(shí)又保留了解釋型語(yǔ)言可移植的特點(diǎn)。 String和StringBuffer、StringBuilder的區(qū)別是什么?String為什么是不可變的? String和StringBuffer、StringBuilder的區(qū)別 可變性...
閱讀 645·2021-09-22 10:02
閱讀 6400·2021-09-03 10:49
閱讀 571·2021-09-02 09:47
閱讀 2156·2019-08-30 15:53
閱讀 2934·2019-08-30 15:44
閱讀 907·2019-08-30 13:20
閱讀 1821·2019-08-29 16:32
閱讀 895·2019-08-29 12:46