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);
}

posted @ 2023-10-30 09:29  1stzz1  阅读(29)  评论(0)    收藏  举报