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