JAVA 反射获取构造方法

首先创建一个学生类,其中包含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)

猜你喜欢

转载自blog.csdn.net/weixin_42630877/article/details/81191554