成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java反射機制剖析:功能以及舉例

開發 后端
從《Java反射機制剖析:定義和API》的API我們看到了許多接口和類,我們能夠通過這些接口做些什么呢

《Java反射機制剖析:定義和API》的API我們看到了許多接口和類,我們能夠通過這些接口做些什么呢?

從上篇API中我們能看到它能夠完成下面的這些功能:

1) 獲得類

A. 運用getClass() (每個class都有此函數)

i. String str = "abc";

ii. Class c1 = str.getClass();

B. 運用Class.forName() (static method 最常被使用)

i. Class c1 = Class.forName ("java.lang.String");

ii. Class c2 = Class.forName ("java.awt.Button");

C. 運用 .class 語法

i. Class c1 = String.class;

ii. Class c2 = java.awt.Button.class;

iii. Class c4 = int.class;

iv. Class c5 = int[].class;

D. 運用 TYPE語法 ( primitive wrapper classes 基本數據類型包裝類的 TYPE語法)

i. Class c1 = Boolean.TYPE;

2) 獲得屬性

以下四個方法可以獲得屬性,主要參見的是Java.lang.class

Public  Field  getField

(String name)

返回一個 Field 對象,它反映此 Class 對象所表示的類或接口的指定公共成員字段

public Field[] getFields()

返回一個包含某些 Field 對象的數組,這些對象反映此 Class 對象所表示的類或接口的所有可訪問公共字段

Public  Field

getDeclaredField(String name)

返回一個 Field 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明字段

public  Field[]

getDeclaredFields()

返回 Field 對象的一個數組,這些對象反映此 Class 對象所表示的類或接口所聲明的所有字段

3) 獲得方法()

以下四個方法可以獲得方法,要參見的是Java.lang.class

public  Method

getMethod(String name,

... )

返回一個 Method 對象,它反映此 Class 對象所表示的類或接口的指定公共成員方法

public Method[] getMethods()

返回一個包含某些 Method 對象的數組,這些對象反映此 Class 對象所表示的類或接口(包括那些由該類或接口聲明的以及從超類和超接口繼承的那些的類或接口)的公共 member 方法

public Method

getDeclaredMethod(String name,…)

返回一個 Method 對象,該對象反映此 Class 對象所表示的類或接口的指定已聲明方法

public Method[]

getDeclaredMethods()

返回 Method 對象的一個數組,這些對象反映此 Class 對象表示的類或接口聲明的所有方法,包括公共、保護、默認(包)訪問和私有方法,但不包括繼承的方法

4) 獲取類的構造器

以下四個方法可以獲得方法,要參見的是Java.lang.class

public  Constructor

getConstructor(Class<?>... )

返回一個 Constructor 對象,它反映此 Class 對象所表示的類的指定公共構造方法

public  Constructor<?>[]

getConstructors()

返回一個包含某些 Constructor 對象的數組,這些對象反映此 Class 對象所表示的類的所有公共構造方法

Public  Constructor<T>

getDeclaredConstructor(Class<?>...)

返回一個 Constructor 對象,該對象反映此 Class 對象所表示的類或接口的指定構造方法

public  Constructor<?>[]

getDeclaredConstructors()

返回 Constructor 對象的一個數組,這些對象反映此 Class 對象表示的類聲明的所有構造方法。它們是公共、保護、默認(包)訪問和私有構造方法

示例代碼:

  1. import java.lang.reflect.Constructor;  
  2. public class TestConstructor {  
  3.     /**  
  4.      * @param args  
  5.      * @throws ClassNotFoundException   
  6.      * @throws SecurityException   
  7.      * @throws NoSuchMethodException   
  8.      */ 
  9.     public static void main(String[] args) throws Exception {  
  10.         // TODO Auto-generated method stub  
  11.         Class classType=Class.forName(args[0]);  
  12.         Constructor Constructor= classType.getConstructor();  
  13.           
  14.             System.out.println(Constructor.toString());  
  15.           
  16.     }  

5) 新建類的實例

調用類的Class對象的newInstance方法

  1. import java.lang.reflect.Constructor;  
  2.  
  3.  
  4. public class TestConstructor {  
  5.     /**  
  6.      * @param args  
  7.      * @throws ClassNotFoundException   
  8.      * @throws SecurityException   
  9.      * @throws NoSuchMethodException   
  10.      */ 
  11.     public static void main(String[] args) throws Exception {  
  12.         // TODO Auto-generated method stub  
  13.         Class classType=Class.forName(args[0]);  
  14.         //Constructor Constructor= classType.getConstructor();  
  15.         Object inst=classType.newInstance();  
  16.         System.out.println(inst);     
  17.     }  

調用默認Constructor對象的newInstance方法

  1. import java.lang.reflect.Constructor;  
  2.  
  3.  
  4. public class TestConstructor {  
  5.     /**  
  6.      * @param args  
  7.      * @throws ClassNotFoundException   
  8.      * @throws SecurityException   
  9.      * @throws NoSuchMethodException   
  10.      */ 
  11.     public static void main(String[] args) throws Exception {  
  12.         // TODO Auto-generated method stub  
  13.         Class classType=Class.forName(args[0]);  
  14.         Constructor Constructor= classType.getConstructor();  
  15.         Object inst=Constructor.newInstance();  
  16.         System.out.println(inst);     
  17.     }  

調用帶參數Constructor對象的newInstance方法

  1. Class classType=User.class 
  2. Constructor constructor2 =  
  3.         classType.getDeclaredConstructor(int.class, String.class);  
  4.  
  5. Object inst = constructor2.newInstance(1"123");  
  6.  
  7. System.out.println(inst); 

原文鏈接:http://blog.csdn.net/lfsf802/article/details/7239711

【編輯推薦】

  1. Java反射機制剖析:定義和API
  2. Java遠程方法調用RMI
  3. Java處理字符串搜索嵌套結構的方法
  4. Java編程:常見問題匯總
  5. Java迷題:等于,還是不等于?
責任編輯:林師授 來源: lfsf802的博客
相關推薦

2012-02-08 10:12:19

Java反射

2010-09-17 12:39:51

JAVA反射機制

2012-02-08 09:44:52

Java反射

2012-02-08 10:37:42

Java反射

2010-09-17 13:02:11

JAVA反射機制

2010-07-13 16:24:55

SQL Server快

2010-02-22 15:01:26

智能交換機

2012-04-05 13:50:38

Java

2017-03-24 09:44:33

Java反射機制

2017-05-17 15:28:15

Java反射機制

2011-03-09 09:11:52

java反射機制

2011-09-27 10:23:24

Java反射機制

2020-09-16 07:00:00

Android 11AndroidAndroid

2011-04-01 14:50:56

Java的反射機制

2009-06-17 13:57:54

java實例Reflection

2025-02-27 00:37:06

2022-06-08 06:38:00

iPadOS 16SafariiCloud

2022-10-21 14:12:06

2010-08-04 13:52:53

Flex事件機制

2010-08-11 09:40:44

LINQ
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产色综合久久 | 日日夜夜精品视频 | 久久国产精品精品 | 久久久久久久国产精品视频 | 91成人在线视频 | 成年人在线 | 亚洲成人精品国产 | 国产精品欧美一区二区三区不卡 | 97色在线视频 | h视频在线免费观看 | 国产精品美女一区二区 | 两性午夜视频 | 四虎影视免费在线 | 亚洲一区二区久久 | 国产日韩一区二区三区 | 91av免费版 | 亚洲免费在线 | 欧美激情精品久久久久久免费 | 久久福利电影 | 欧美精品一区二区免费视频 | 特级特黄特色的免费大片 | 美国十次成人欧美色导视频 | 中文字幕乱码一区二区三区 | 欧美精品91| 欧美一区二区三区在线播放 | 亚洲精视频| 日本特黄特色aaa大片免费 | 亚洲精品成人在线 | 精品日本中文字幕 | 欧美视频在线播放 | 国产91精品久久久久久久网曝门 | 免费一区| 久久精品一二三影院 | 日韩久久久久 | 久久久久www | 午夜视频一区二区三区 | 久久久久久国产精品免费免费 | 爱操av| 日美女逼逼| 超级碰在线 | 精品www|