這篇文章主要介紹“Java反射機(jī)制的功能以及舉例”,在日常操作中,相信很多人在Java反射機(jī)制的功能以及舉例問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Java反射機(jī)制的功能以及舉例”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到順昌網(wǎng)站設(shè)計(jì)與順昌網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名與空間、網(wǎng)站空間、企業(yè)郵箱。業(yè)務(wù)覆蓋順昌地區(qū)。
1) 獲得類
A. 運(yùn)用getClass() (每個(gè)class都有此函數(shù))
i. String str = "abc";
ii. Class c1 = str.getClass();
B. 運(yùn)用Class.forName() (static method 最常被使用)
i. Class c1 = Class.forName ("java.lang.String");
ii. Class c2 = Class.forName ("java.awt.Button");
C. 運(yùn)用 .class 語(yǔ)法
i. Class c1 = String.class;
ii. Class c2 = java.awt.Button.class;
iii. Class c4 = int.class;
iv. Class c5 = int[].class;
D. 運(yùn)用 TYPE語(yǔ)法 ( primitive wrapper classes 基本數(shù)據(jù)類型包裝類的 TYPE語(yǔ)法)
i. Class c1 = Boolean.TYPE;
2) 獲得屬性
以下四個(gè)方法可以獲得屬性,主要參見(jiàn)的是Java.lang.class
|
|
|
|
|
|
|
|
3) 獲得方法()
以下四個(gè)方法可以獲得方法,要參見(jiàn)的是Java.lang.class
public Method getMethod(String name, ... ) | 返回一個(gè) Method 對(duì)象,它反映此 Class 對(duì)象所表示的類或接口的指定公共成員方法 |
public Method[] getMethods() | 返回一個(gè)包含某些 Method 對(duì)象的數(shù)組,這些對(duì)象反映此 Class 對(duì)象所表示的類或接口(包括那些由該類或接口聲明的以及從超類和超接口繼承的那些的類或接口)的公共 member 方法 |
public Method getDeclaredMethod(String name,…) | 返回一個(gè) Method 對(duì)象,該對(duì)象反映此 Class 對(duì)象所表示的類或接口的指定已聲明方法 |
public Method[] getDeclaredMethods() | 返回 Method 對(duì)象的一個(gè)數(shù)組,這些對(duì)象反映此 Class 對(duì)象表示的類或接口聲明的所有方法,包括公共、保護(hù)、默認(rèn)(包)訪問(wèn)和私有方法,但不包括繼承的方法 |
4) 獲取類的構(gòu)造器
以下四個(gè)方法可以獲得方法,要參見(jiàn)的是Java.lang.class
public Constructor getConstructor(Class>... ) | 返回一個(gè) Constructor 對(duì)象,它反映此 Class 對(duì)象所表示的類的指定公共構(gòu)造方法 |
public Constructor>[] getConstructors() | 返回一個(gè)包含某些 Constructor 對(duì)象的數(shù)組,這些對(duì)象反映此 Class 對(duì)象所表示的類的所有公共構(gòu)造方法 |
Public Constructor getDeclaredConstructor(Class>...) | 返回一個(gè) Constructor 對(duì)象,該對(duì)象反映此 Class 對(duì)象所表示的類或接口的指定構(gòu)造方法 |
public Constructor>[] getDeclaredConstructors() | 返回 Constructor 對(duì)象的一個(gè)數(shù)組,這些對(duì)象反映此 Class 對(duì)象表示的類聲明的所有構(gòu)造方法。它們是公共、保護(hù)、默認(rèn)(包)訪問(wèn)和私有構(gòu)造方法 |
示例代碼:
import java.lang.reflect.Constructor; public class TestConstructor { /** * @param args * @throws ClassNotFoundException * @throws SecurityException * @throws NoSuchMethodException */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Class classType=Class.forName(args[0]); Constructor Constructor= classType.getConstructor(); System.out.println(Constructor.toString()); } }
5) 新建類的實(shí)例
調(diào)用類的Class對(duì)象的newInstance方法
import java.lang.reflect.Constructor; public class TestConstructor { /** * @param args * @throws ClassNotFoundException * @throws SecurityException * @throws NoSuchMethodException */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Class classType=Class.forName(args[0]); //Constructor Constructor= classType.getConstructor(); Object inst=classType.newInstance(); System.out.println(inst); } }
調(diào)用默認(rèn)Constructor對(duì)象的newInstance方法
import java.lang.reflect.Constructor; public class TestConstructor { /** * @param args * @throws ClassNotFoundException * @throws SecurityException * @throws NoSuchMethodException */ public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Class classType=Class.forName(args[0]); Constructor Constructor= classType.getConstructor(); Object inst=Constructor.newInstance(); System.out.println(inst); } }
調(diào)用帶參數(shù)Constructor對(duì)象的newInstance方法
Class classType=User.class Constructor constructor2 = classType.getDeclaredConstructor(int.class, String.class); Object inst = constructor2.newInstance(1, "123"); System.out.println(inst);
到此,關(guān)于“Java反射機(jī)制的功能以及舉例”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!