如何通过反射获取构造方法

上次文章说过反射,这次来讲讲如何用反射来获取构造方法。

获取构造方法:

1).批量的方法:public Constructor[] getConstructors():

所有"公有的"构造方法 public Constructor[] getDeclaredConstructors():

获取所有的构造方法(包括私有、受保护、默认、公有)

2).获取单个的方法,并调用:public Constructor getConstructor(Class... parameterTypes)

获取单个的"公有的"构造方法:public Constructor getDeclaredConstructor(Class... parameterTypes)

获取"某个构造方法"可以是私有的,或受保护、默认、公有。

调用构造方法:

Constructor-->newInstance(Object... initargs)

newInstance是 Constructor类的方法(管理构造函数的类)

具体代码:

jdk版本为jdk1.8.0_131

编程软件为IntelliJ IDEA 2018.3 x64

 

实体类:

 

 

 

public class Person {
private String name;
int age;
public String address;
public Person(){}
private Person(String name, int age){
this.name=name;
this.age=age;
}
public Person(String name, int age, String address){
this.name=name;
this.age=age;
this.address=address;
}
}

 

测试类:

import java.lang.reflect.Constructor;

public class Demo2 {
public static void main(String[] args) throws ClassNotFoundException {
//获取Class对象即获取整个Person类
Class c = Class.forName("获取Class文件对象的三种方式.Person");


//获取所有public修饰的构造方法
Constructor[] constructors = c.getConstructors();

for(Constructor constructor:constructors){
System.out.println(constructor);
}

//获取所有构造方法
Constructor[] declaredConstructors = c.getDeclaredConstructors();

for(Constructor declaredConstructor:declaredConstructors){
System.out.println(declaredConstructor);
}
}
}




心得感悟:

耐心不是消极等待,而是像昙花一样地蓄积养分;

耐心不是贫图安逸,而是像蝉虫一样默默地磨砺自强;

耐心不是忍气吞声,而是像企鹅一样奋力下潜蓄势。 

智慧源于勤奋,伟大出自平凡!!!

 

 

 

 

 

 

import java.lang.reflect.Constructor;publicclassReflectDemo2{publicstaticvoidmain(String[] args)throws ClassNotFoundException {//获取Class对象即获取整个Person类 Class c= Class.forName("获取Class文件对象的三种方式.Person");//获取所有public修饰的构造方法 Constructor[] constructors = c.getConstructors();for(Constructor constructor:constructors){ System.out.println(constructor);}//获取所有构造方法 Constructor[] declaredConstructors = c.getDeclaredConstructors();for(Constructor declaredConstructor:declaredConstructors){ System.out.println(declaredConstructor);}}}

posted @ 2020-08-23 18:46  冬了  阅读(840)  评论(0编辑  收藏  举报