Java基础 反射获取构造方法
在 Java 中,万物皆对象。比如,字节码文件 可以看作是 Class这个类的对象;
Constructor 这个类是用来描述 构造方法的,所以这个类的对象就表示构造方法的对象;
Field 这个类是用来描述成员变量的,所以这个类的对象就表示成员变量的对象;
Method 这个类是用来描述成员方法的,所以这个类的对象就表示成员方法的对象

代码示例:
public static void main(String[] args) throws Exception {
//获取字节码文件对象
Class clazz = Class.forName("pojo.Student");
//获取所有构造方法
Constructor[] cons = clazz.getDeclaredConstructors();
for (Constructor con : cons) {
System.out.println(con);
}
//获取空参构造
Constructor con1 = clazz.getDeclaredConstructor();
System.out.println(con1);
//获取有参构造
Constructor con2 = clazz.getDeclaredConstructor(String.class, Integer.class);
System.out.println(con2);
//获取有参构造的参数
Parameter[] parameters = con2.getParameters();
for (Parameter parameter : parameters) {
System.out.println(parameter);
}
//利用构造方法创建对象 以有参构造为例
con2.setAccessible(true);//暴力反射,临时取消权限校验(如果构造方法是私有的,就临时取消权限的校验,就可以用私有的构造方法创建对象了)
Student stu = (Student) con2.newInstance("张三", 23);
System.out.println(stu);
}
浙公网安备 33010602011771号