摘要:知識點(diǎn)總結(jié)反射介紹知識點(diǎn)總結(jié)反射反射程序在運(yùn)行狀態(tài)中,可以動態(tài)加載一個只有名稱的類動態(tài)調(diào)用類的所有屬性和方法加載完類之后,在堆內(nèi)存中,就產(chǎn)生了一個類型的對象一個類只有一個對象。
Java知識點(diǎn)總結(jié)(反射-介紹)
@(Java知識點(diǎn)總結(jié))[Java, 反射]
反射程序在 運(yùn)行狀態(tài)中 ,可以動態(tài)加載一個只有名稱的類 (動態(tài)調(diào)用類的所有屬性和方法)
Class c = Class.forName("com..test.User");
加載完類之后,在堆內(nèi)存中,就產(chǎn)生了一個 Class 類型的對象(一個類只有一個 Class 對象)。
這個對象就包含了完整的類的結(jié)構(gòu)信息,通過這個對象我們可以看到類的結(jié)構(gòu)。這個對象就像一面鏡子,透過這個鏡子看到類 的結(jié)構(gòu),所以,我們形象的稱之為:反射。
反射的常見作用:
動態(tài)加載類、動態(tài)獲取類的信息(屬性、方法、構(gòu)造器)
動態(tài)構(gòu)造對象
動態(tài)調(diào)用類和對象的任意方法、構(gòu)造器
動態(tài)調(diào)用和處理屬性
獲取泛型信息
處理注解
示例:
public class Test01 { // 一個類只對應(yīng)一個 Class 對象 private static void test1() throws ClassNotFoundException { String path = "com.gs.Student"; Class clazz1 = Class.forName(path); Class clazz2 = Class.forName(path); System.out.println(clazz1.hashCode()); System.out.println(clazz2.hashCode()); /*366712642 366712642*/ } // 數(shù)組類類型 private static void test2() { Class intClazz =int.class; int[] arr01 = new int[10]; int[] arr02 = new int[30]; int[][] arr03 = new int[30][3]; double[] arr04 = new double[10]; System.out.println(intClazz.hashCode()); //1829164700 System.out.println(arr01.getClass().hashCode()); //2018699554 System.out.println(arr02.getClass().hashCode()); //2018699554 // arr01 == arr02 都是一維同一類型的對象 System.out.println(arr03.getClass().hashCode()); //1311053135 System.out.println(arr04.getClass().hashCode()); //118352462 } // 獲取類的類型 private static void test3() { String path = "com.gs.Student"; Class strClazz = path.getClass(); //對象獲取類的類型 Class strClazz2 = String.class; //類獲取類的類型 System.out.println(strClazz == strClazz2); //true } public static void main(String[] args) { try { test1(); } catch (ClassNotFoundException e) { e.printStackTrace(); } test2(); test3(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/71586.html
摘要:知識點(diǎn)總結(jié)動態(tài)字節(jié)碼操作介紹知識點(diǎn)總結(jié)動態(tài)字節(jié)碼操作運(yùn)行時操作字節(jié)碼可以讓我們實(shí)現(xiàn)如下功能動態(tài)生成新的類動態(tài)改變某個類的結(jié)構(gòu)添加刪除修改新的屬性方法常見的字節(jié)碼操作類庫,這是的項(xiàng)目的一部分。 Java知識點(diǎn)總結(jié)(動態(tài)字節(jié)碼操作-Javassist介紹) @(Java知識點(diǎn)總結(jié))[Java, 動態(tài)字節(jié)碼操作] 運(yùn)行時操作字節(jié)碼可以讓我們實(shí)現(xiàn)如下功能: 動態(tài)生成新的類 動態(tài)改變某個類的結(jié)...
摘要:本文是作者自己對中線程的狀態(tài)線程間協(xié)作相關(guān)使用的理解與總結(jié),不對之處,望指出,共勉。當(dāng)中的的數(shù)目而不是已占用的位置數(shù)大于集合番一文通版集合番一文通版垃圾回收機(jī)制講得很透徹,深入淺出。 一小時搞明白自定義注解 Annotation(注解)就是 Java 提供了一種元程序中的元素關(guān)聯(lián)任何信息和著任何元數(shù)據(jù)(metadata)的途徑和方法。Annotion(注解) 是一個接口,程序可以通過...
摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊(duì)的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...
摘要:知識點(diǎn)總結(jié)反射反射機(jī)制性能問題知識點(diǎn)總結(jié)反射性能相關(guān)注意點(diǎn)啟用和禁用訪問安全檢查的開關(guān)值為則指示反射的對象在使用時應(yīng)該取消語言訪問檢查。并不是為就能訪問為就不能訪問。禁止安全檢查,可以提高反射的運(yùn)行速度。 Java知識點(diǎn)總結(jié)(反射-反射機(jī)制性能問題) @(Java知識點(diǎn)總結(jié))[Java, 反射] 性能相關(guān)注意點(diǎn): setAccessible 啟用和禁用訪問安全檢查的開關(guān),值為 tru...
摘要:知識點(diǎn)總結(jié)反射通過反射操作類的屬性和方法知識點(diǎn)總結(jié)反射使用反射操作類的屬性和方法通過反射調(diào)用構(gòu)造方法,構(gòu)造對象其實(shí)調(diào)用無參構(gòu)造器張三調(diào)用有參構(gòu)造器李四通過反射調(diào)用普通方法獲取方法激活方法王武王武通過反射操作屬性是屬性,如果不寫會這個私有屬 Java知識點(diǎn)總結(jié)(反射-通過反射操作類的屬性和方法 ) @(Java知識點(diǎn)總結(jié))[Java, 反射] 使用反射操作類的屬性和方法: import ...
閱讀 1104·2021-09-22 15:37
閱讀 1131·2021-09-13 10:27
閱讀 2466·2021-08-25 09:38
閱讀 2445·2019-08-26 11:42
閱讀 1524·2019-08-26 11:39
閱讀 1554·2019-08-26 10:58
閱讀 2317·2019-08-26 10:56
閱讀 2569·2019-08-23 18:08