反射——操作构造方法

本篇博客介绍的是 通过反射操作构造方法:
我们先创建一个vo类

public class Student{
	public Student(String name){
		
	}
	private Student(){
			
	}
}	

接下来写一个测试类Test,来通过反射操作构造方法

public class Test{
	public static void main(String[] args){
		Class clazz = Student.class;
		try{
			//获取构造方法
			//getConstructor()方法,只能获取访问权限为public的,该方法参数为调用方法参数的类类型
			Constructor constructor = clazz.getConstructor(String.class);
			//忽略访问权限获取构造方法,调用的构造方法没有参数列表则这里不写参数;
			constructor = clazz.getDeclaredConstructor();
			//这里这个数组中,包含着所有访问权限为public的构造方法
			Constructor[] constructors = clazz.getConstructors();
			//这里获取的是所有构造方法,忽略访问权限
			constructors = clazz.getDeclaredConstructors();
			
			//查看构造方法相关信息
			
			//获取当前构造方法所在类
			clazz = constructor.getDeclaringClass();
   			System.out.println(clazz);
   			//获取访问权限的,返回值为int,需要toString
   			int mod = constructor.getModifiers();
   			String result = Modifier.toString(mod);
  			System.out.println(result);
  			//获取构造方法名
   			result = constructor.getName();
   			System.out.println(result);
   			//获取参数列表类型:
   			Class[] types = constructor.getParameterTypes();//返回Class类的数组
			
			//调用构造方法创建对象,注意:若调用构造方法的访问权限为private,则需要调用如下方法忽视访问权限,否则无法操作
			constructor.setAccessible(true);//忽略访问权限
			//newInstance()方法会使构造方法生效,可在参数列表中传入调用的构造方法所需参数,返回值为Object类
			Object obj = constructor.newInstance();
			//obj为一个上转型对象
   			System.out.println(obj instanceof Student);
		} catch (Exception e) {
   			e.printStackTrace();
  		}
	}
}
发布了101 篇原创文章 · 获赞 3 · 访问量 2251

猜你喜欢

转载自blog.csdn.net/S_Tian/article/details/103878000
今日推荐