生活随笔
收集整理的這篇文章主要介紹了
java.lang.reflect.Constructor
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉載自?https://www.cnblogs.com/xinhuaxuan/p/6019524.html
java.lang.reflect.Constructor
一、Constructor類是什么
Constructor是一個類,位于java.lang.reflect包下。
在Java反射中 Constructor類描述的是 類的構造方法信息,通俗來講 有一個類如下:
1 package com.testReflect;
2 public class ConstructorDemo {
3 private int num;
4 private String str;
5
6 public ConstructorDemo(){
7 num = 2
;
8 str = "xixi"
;
9 }
10
11 public ConstructorDemo(
int num,String str){
12 this.num =
num;
13 this.str =
str;
14 }
15
16 @Override
17 public String toString() {
18 return "ConstructorDemo [num=" + num + ", str=" + str + "]"
;
19 }
20 }
在Java反射中ConstructorDemo類中的構造方法ConstructorDemo()、ConstructorDemo(int num,String str)都是Constructor類的實例,這個Constructor類的實例描述了構造方法的全部信息。(包括:方法修飾符、方法名稱、參數列表 等等)
二、如何獲取Constructor類對象
一共有4種方法,全部都在Class類中:
- getConstructors():獲取類中的公共方法
- getConstructor(Class[] params): 獲取類的特定構造方法,params參數指定構造方法的參數類型
- getDeclaredConstructors(): 獲取類中所有的構造方法(public、protected、default、private)
- getDeclaredConstructor(Class[] params): 獲取類的特定構造方法,params參數指定構造方法的參數類型
三、Constructor類中常用的方法
對于構造方法,我們就是用來創建類的實例的,但是在Java反射中需要注意的是:默認構造函數和帶參數的構造方法創建實例的區別。
1 package com.testReflect;
2
3 import java.lang.reflect.Constructor;
4 import java.lang.reflect.Modifier;
5
6 public class ConstructorTest {
7 public static void main(String[] args)
throws Exception {
8 //使用反射第一步:獲取操作類ConstructorDemo所對應的Class對象
9 Class<?> cls = Class.forName("com.testReflect.ConstructorDemo"
);
10
11 //獲取默認的構造函數
12 Constructor constructor1 = cls.getConstructor(
new Class[]{});
13 //獲取構造函數信息
14 System.out.println("修飾符: "+
Modifier.toString(constructor1.getModifiers()));
15 System.out.println("構造函數名: "+
constructor1.getName());
16 System.out.println("參數列表: "+
constructor1.getParameterTypes());
17 //通過默認的構造函數創建ConstructorDemo類的實例
18 Object obj =
constructor1.newInstance();
19 System.out.println("調用默認構造函數生成實例:"+
obj.toString());
20
21 System.out.println("==============================================="
);
22
23 //獲取帶參數的構造函數
24 Constructor constructor2 = cls.getConstructor(
new Class[]{
int.
class,String.
class});
25 System.out.println("修飾符: "+
Modifier.toString(constructor2.getModifiers()));
26 System.out.println("構造函數名: "+
constructor2.getName());
27 System.out.println("參數列表: "+
constructor2.getParameterTypes());
28 //獲取構造函數信息
29 //通過帶參數的構造函數創建ConstructorDemo類的實例
30 Object obj2 = constructor2.newInstance(
new Object[]{33,"haha"
});
31 System.out.println("調用帶參數構造函數生成實例:"+
obj2.toString());
32 }
33 }
?
總結
以上是生活随笔為你收集整理的java.lang.reflect.Constructor的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。