JAVA 反射機制剖析
一、Class、Object 類的理解
Object類位於在java.lang包中,此包在使用時無需顯式匯入,編譯時由編譯器自動匯入;Object類預設為所有類的父類即所有的java類都繼承了Object擁有的方法,其中一個與JAVA反射機制有關的方法是getClass(),此方法返回當前物件的執行時類,然後通過使用此類實現反射的其它功能。
Class類表示正在執行應用程式中的類和介面;Class沒有public的構造方法所以只能由java虛擬機器或者呼叫類載入器的defineClass方法生成Class物件;通過生成的Class物件完成其它反射功能。
二、反射的理解及可完成的工作
java語言不支援在程式執行時改變程式結構或者變數的值,但它提供了一種機制可使正在執行的java物件得到其類定義方法、變數並可通過此機制動態的新增及執行發放的機制,這種機制我們稱之為java的反射機制。
java的反射機制具體來說可實現以下4種功能:
1、根據執行物件得到完整類名
2、得到執行物件類的方法包括構造方法
3、得到類生成物件
4、得到類定義的公用變數
三、反射的具體使用方法
1、得到執行物件類的Class例項。
可通過以下多種方式獲取Class例項
a)、在執行時物件中可通過呼叫超類方法getClass()得到Class例項,如下:
String str = "";
Class c1 = str.getClass;
b)、通過Class類的靜態方法forName("");
Class c1 = Class.forName ("java.lang.String");
c)、 通過包裝類的TYPE屬性
Class c1 = Integer.TYPE;
2、獲取類的構造方法並構造一個新物件 執行某個方法
public class Test {
public static void main(String [] args) throws ClassNotFoundException, IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException{
Class c = Class.forName("t");
Constructor[] con = c.getConstructors();
Class<?>[] type = con[1].getParameterTypes();
Object obj = c.getConstructor(type).newInstance("zhang");
obj.getClass().getMethod("m2").invoke(obj);
}
}
class t{
String s = "";
public t(){
System.out.println("t()");
}
public t(String sr){
this.s = sr;
}
public void m1(){
System.out.println("m1()");
}
public void m2(){
System.out.println(s);
}
}
反射可實現的其他功能可JDK文件實現。
相關推薦
JAVA 反射機制剖析
一、Class、Object 類的理解 Object類位於在java.lang包中,此包在使用時無需顯式匯入,編譯時由編譯器自動匯入;Object類預設為所有類的父類即所有的java類都繼承了Object擁有的方法,其中一個與JAVA反射機制有關的方法是getCl
Java反射機制深度剖析
Java反射機制是Java語言中一種很重要的機制,可能在工作中用到的機會不多,但是在很多框架中都有用到這種機制。我們知道Java是一門靜態語言,在程式編譯時變數的資料型別都已經確定,那麼在Java執行時環境中,對於任意一個類,我們能否知道這個類有哪些屬性和方法?對於任意一個物件,能否呼叫它的任意
java反射機制
else ++ 類型 應該 動態 error param 字母 什麽 最近在做一個項目。 需求是這樣的,前端傳一個參數param表示要從服務器獲取的參數,後端需要把對應的參數從服務器中取出來。 本來覺得沒什麽,應該蠻簡單。結果一看表,嗯,40多個參數,如果用if...els
Java反射機制深入詳解
const 運行時 設計 應用程序 類加載器 分配 import 程序 為什麽 一.概念 反射就是把Java的各種成分映射成相應的Java類。 Class類的構造方法是private,由JVM創建。 反射是java語言的一個特性,它允程序在運行時(註意不是編譯的
利用JAVA反射機制實現調用私有方法
parse try ble cat 權限 利用 enabled tde mod 1.fragment是AccessibilityFragment的對象。須要被調用的方法的類。 setAccessible(true)並非將方法的訪問權限改成了public。而是取
Java反射機制詳解一
java 反射 反射機制 工廠模式 1反射機制是什麽反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。在面向對象的世界裏,萬事萬物皆對象.在ja
java-反射深度剖析
需要 truct 正在 -1 工具 public lang 生成 rtai Java反射是Java語言一個很重要的特征,簡單剖析下反射的定義、原理、使用、性能及應用場景。 (一)定義 程序運行時,允許改動程序結構或變量類型,這種語言稱為動態語言。java不屬於動態語言,但提
java 反射機制 觀點
pan sse clipboard star -s cin clip att repl 反射,當時經常聽他們說,自己也看過一些資料,也可能在設計模式中使用過,但是感覺對它沒有一個較深入的了解,這次重新學習了一下,感覺還行吧! 一,先看一下反
候捷談Java反射機制
將在 內省 編程 pub pop 批處理 cdecl 清理 void 2013-06-12 22:51 1690人閱讀 評論(0) 收藏 舉報 分類: JAVA(51) 傳送門:http://blog.csdn.net/njchenyi/article
Java反射機制詳解
ride length 數組大小 conf array arraycopy 動態調用 ray info Java反射機制詳解 |目錄 1反射機制是什麽 2反射機制能做什麽 3反射機制的相關API ·通過一個對象獲得完整的包名和類名 ·實例化Class類對象 ·獲
java 反射機制
選擇 count 語言 用戶 方案 獲取 接口 功能 .cn 一、java反射機制是什麽? JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取信息以及動態調用對象方法的功能稱為j
Java反射機制demo(五)—獲得並調用一個類中的方法
color 擁有 oca logs over super getmethod equals() bool 這個demo在使用反射機制操作屬性之前,主要原因是因為在.class文件字節碼中,方法排在屬性的前面。 1,獲得一個類中的方法 先看一下方法和運行結果。獲取所有的方
java反射機制學習:初始反射機制
pro sta 加載 初始 完整 tac demo 獲得 sys 本人小白一枚,想和大家一起分享我學習java的筆記和心得。 反射機制: 指的是可以於運行時加載、探知、使用編譯期間完全未知的類。 程序在運行狀態中,可以動態加載一個只有名稱的類,對於任意一個已加載的
【java】java反射機制,動態獲取對象的屬性和對應的參數值,並屬性按照字典序排序,Field.setAccessible()方法的說明【可用於微信支付 簽名生成】
modifier 直接 this 字段值 1-1 讓我 toupper ima play 方法1:通過get()方法獲取屬性值 package com.sxd.test.controller; public class FirstCa{ private
java反射機制淺析
成員變量 java語言 運行時 淺析 表示 運行 如何 信息 動態獲取 Java反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為Java語言的反射
java反射機制實現攔截器
tor 攔截 stat 重要 obj static interface 程序 bject 實現一個攔截器必須要實現一下幾個類: 1 目標類接口:目標類要實現的接口。 package com.lanvis.reflect; public interface ITarge
Java反射機制能夠獲取的信息,與應用
rri 代理 pan [] reflect 語言 子類 list tro 一、什麽是Java反射機制? 【1】反射機制是在運行狀態中,對於任何一個類,都能夠知道這個類的所有屬性和方法; 【2】對於任意一個對象,都能夠調用它的任意一個屬性和方法; 像這種動態獲取類的信
Java基礎——Java反射機制
靜態 load super actual 返回 generic ref 基本 有一個 Reflection(反射)是Java被視為動態語言的關鍵,反射機制允許程序在執行期借助於Reflection API取得任何類的內部信息,並能直接操作任意對象的內部屬性及方法 Java
隨筆12 java反射機制
ron fields () exception 修飾符 等等 img get nbsp 一:反射機制 Java反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方
Java反射機制的簡單應用
mod arc pos ret system containe java反射機制 track san 一直感覺java的反射機制非常強大,可是可用的地方不多。在android學習的時候。一直想實現掛斷電話的功能,可是