首先创建一个学生类,其中包含6 个构造方法
public class Student {
//---------------构造方法-------------------
//(默认的构造方法)
Student(String str){
System.out.println("(默认)的构造方法 s = " + str);
}
//无参构造方法
public Student(){
System.out.println("调用了公有、无参构造方法执行了。。。");
}
//有一个参数的构造方法
public Student(char name){
System.out.println("姓名:" + name);
}
//有多个参数的构造方法
public Student(String name ,int age){
System.out.println("姓名:"+name+"年龄:"+ age);//这的执行效率有问题,以后解决。
}
//受保护的构造方法
protected Student(boolean n){
System.out.println("受保护的构造方法 n = " + n);
}
//私有构造方法
private Student(int age){
System.out.println("私有的构造方法 年龄:"+ age);
}
}
创建一个测试类,包含main方法,来进行反射
public class Fanshe {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException {
Class student = Class.forName("equals.Student");
//2.获取所有公有构造方法
System.out.println("**所有公有构造方法**");
Constructor[] conArray = student.getConstructors();
for(Constructor c : conArray){
System.out.println(c);
}
System.out.println("**所有的构造方法(包括:私有、受保护、默认、公有)**");
conArray = student.getDeclaredConstructors();
for(Constructor c : conArray){
System.out.println(c);
}
System.out.println("**获取私有构造方法,并调用**");
Constructor declaredConstructor = student.getDeclaredConstructor(int.class);
System.out.println(declaredConstructor);
}
}
后台输出的结果如下
**所有公有构造方法**
public equals.Student(java.lang.String,int)
public equals.Student(char)
public equals.Student()
**所有的构造方法(包括:私有、受保护、默认、公有)**
private equals.Student(int)
protected equals.Student(boolean)
public equals.Student(java.lang.String,int)
public equals.Student(char)
public equals.Student()
equals.Student(java.lang.String)
**获取私有构造方法,并调用**
private equals.Student(int)