摘要:一反射機制概念程序運行時,允許改變程序結構或變量類型,這種語言稱為動態語言,如,是動態語言顯然,,不是動態語言,但是有著一個非常突出的動態相關機制。相關的為二獲取源頭重點打開權限所有類的對象其實都是的實例。
一、Java反射機制概念
“程序運行時,允許改變程序結構或變量類型,這種語言稱為動態語言”,如Python,
Ruby是動態語言;顯然C++,Java,C#不是動態語言,但是JAVA有著一個非常突出
的動態相關機制:Reflection。
JAVA反射機制是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方
法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以
及動態調用對象的方法的功能稱為java語言的反射機制。如
/** * 入門級示例:通過對象獲取 包名.類名 * @author Administrator */ public class Simple { public static void main(String[] args) { Simple s=new Simple(); System.out.println(s.getClass().getName()); } }
Java反射機制,可以實現以下功能:
①在運行時判斷任意一個對象所屬的類;
②在運行時構造任意一個類的對象;
③在運行時判斷任意一個類所具有的成員變量和方法;
④在運行時調用任意一個對象的方法;
⑤生成動態代理。
相關的api為
打開權限:
add.setAccessible(true);
所有類的對象其實都是Class的實例。這個Class實例可以理解為類的模子,就是包含了類的結構信息,類似于圖紙。我們日常生活中,需要創造一個產品,如想山寨一個iphone手機,怎么辦?
有三種方式可以實現:
⑴買個iphone手機,拆的七零八落的,開始山寨;
⑵到iphone工廠參觀,拿到iphone磨具,開始山寨;
⑶跑到美國盜取iphone的圖紙,開始山寨,最后一種最暴力,最爽。
序列化:實現serializable接口,
反序列化
克隆:實現cloneable接口,重寫clone()方法,修改權限為public
New 反射
同理,獲取類的class對象,也有三種方式:
①Class.forName(”包名.類名”)//一般盡量采用該形式
②類.class
③對象.getClass()
示例如下:
public class Source { public static void main(String[] args) { //第一種方式:對象.class Source s=new Source(); Class>c1=s.getClass(); //第二種方式:類.class Class>c2=Source.class; //第三種方式(推薦方式):Class.forName() Class>c3=null; try { c3=Class.forName("com.shsxt.ref.simple.Source"); } catch (ClassNotFoundException e) { e.printStackTrace(); } System.out.println(c1.getName()); System.out.println(c2.getName()); System.out.println(c3.getName()); } }
有了class對象,我們就有了一切,這就是反射的源頭,接下來就是“庖丁解牛”。
歡迎繼續關注樂字節Java課程,樂字節原創,學Java,小樂來幫您。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75188.html
摘要:大家好,小樂繼續接著上集樂字節反射之一反射概念與獲取反射源頭這次是之二實例化對象接口與父類修飾符和屬性一實例化對象之前我們講解過創建對象的方式有克隆反序列化,再加一種,根據對象,使用或者構造器實例化對象。 大家好,小樂繼續接著上集:樂字節Java反射之一:反射概念與獲取反射源頭Class 這次是之二:實例化對象、接口與父類、修飾符和屬性 一:實例化對象 之前我們講解過創建對象的方式,有...
摘要:大家好,樂字節小樂繼續為初學者講述基礎知識。上次說到樂字節反射之三方法數組類加載器,這次是反射之四反射相關操作操作屬性獲取對象獲取對象設置屬性打開權限獲取此屬性調用方法調用方法,都是直接對象方法實參反射之后,動態調用方法需要使用即可。 大家好,樂字節小樂繼續為Java初學者講述Java基礎知識。上次說到樂字節Java反射之三:方法、數組、類加載器,這次是Java反射之四:反射相關操作 ...
摘要:本文承接上一篇樂字節發射之二實例化對象接口與父類修飾符和屬性繼續講述反射之三方法數組類加載器一方法獲取所有方法包括父類或接口,使用即可。當沒有任何引用指向對象時就會被卸載,結束類的生命周期。 本文承接上一篇:樂字節Java發射之二:實例化對象、接口與父類、修飾符和屬性 繼續講述Java反射之三:方法、數組、類加載器 一、方法 獲取所有方法(包括父類或接口),使用Method即可。sho...
摘要:擴展了反射機制的,以幫助程序員快速的構造自定義注解處理器。返回該程序元素上存在的所有注解。在中,可以使用注解將一個繼承于的類標注為可以處理用戶請求的。 大家好,我是樂字節的小樂,上次給大家帶來了Java注解-元數據、注解分類、內置注解和自定義注解|樂字節,這次接著往下講注解處理器和servlet3.0showImg(https://segmentfault.com/img/bVbvBP...
近期在維護公司項目的時候遇到一個問題,因為實體類中的 set 方法涉及到了業務邏輯,因此在給對象賦值的過程中不能夠使用 set 方法,為了實現功能,所以采用了反射的機制給對象屬性賦值,借此機會也了解了反射的一些具體用法和使用場景,分以下兩點對反射進行分析: 反射的優勢和劣勢 反射的應用場景 反射的優勢和劣勢 ??個人理解,反射機制實際上就是上帝模式,如果說方法的調用是 Java 正確的打開方式...
閱讀 566·2021-11-18 10:02
閱讀 1048·2021-11-02 14:41
閱讀 674·2021-09-03 10:29
閱讀 1893·2021-08-23 09:42
閱讀 2728·2021-08-12 13:31
閱讀 1199·2019-08-30 15:54
閱讀 1952·2019-08-30 13:09
閱讀 1427·2019-08-30 10:55