JAVA反射機制

來源:互聯網
上載者:User

標籤:sys   print   tcl   public   java   null   方法調用   method   類類型   

下面就簡單的總結一下java反射機制,加深印象:

什麼是反射機制?

JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;

對於任意一個對象,都能夠調用它的任意方法和屬性;

這種動態擷取資訊以及動態調用對象方法的功能稱為java語言的反射機制。

Class類

我們知道Java是一門物件導向語言,在Java的世界裡,萬物皆為對象,比如我們有一個Person類:

public class Person { }

我們建立一個Person類的執行個體,Person person = new Person; 那麼這個person,就是Person類的執行個體對象。

那麼既然萬物都為對象,所以類也是對象。

類是什麼的對象呢?類是Class類的對象,表示方式有三種:

第一種,任何一個類都有一個隱含的靜態成員變數class Class c1 = Person.class;

第二種,已經知道該類的對象,通過getClass獲得 Class c2 = person.getClass;

第三種,Class類的forName方法 Class c3 = Class.forName("Person"); 

 

通過類的類類型,我們經常會用到的方法就是newInstance方法,通過該方法可以建立該類的執行個體:

Person personA = new Person;

//直接new一個執行個體 Person personB = Person.class.newInstance;

//通過newInstance方法獲得Person的執行個體

//在學習JAVAEE時候,newInstance方法我們最常見於擷取資料庫驅動 Class.forName("com.mysql.jdbc.Driver").newInstance;

//需要注意的是,在使用newInstance方法的前提是該類必須要有無參構造方法

動態載入類:

編譯時間刻載入類稱為靜態載入,運行時刻載入類稱為動態載入,使用new方法建立執行個體即為靜態載入類,在編譯時間候就要載入全部類。

 

方法的反射操作

可以通過方法的反射操作實現方法的調用:

import java.lang.reflect.Method;public class MethodDemo1 {     public static void main(String[] args) {     //要擷取print(int, int)     //要擷取類的方法就要擷取類的資訊,擷取類的資訊就要擷取類的類類型     A a1 = new A; Class c = a1.getClass;     //2,擷取方法 名稱和參數列表     //getMethod擷取的是public的方法    try {         Method m = c.getDeclaredMethod("print", int.class,int.class);            
     //方法的反射操作 //a1.print(10, 20);方法的反射操作,用m來進行方法調用和前者效果一致 Object obj = m.invoke(a1, 10,20); //如果方法有傳回值傳回值,沒有就null } catch (Exception e) { e.printStackTrace; } } }class A { public void print(int a , int b) { System.out.println(a + b); } public void print(String a , String b) {
   System.out.println(a.toUpperCase + "," + b.toUpperCase); } }

 

 

JAVA反射機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.