获取构造方法的几种方式
获取多个构造函数的方式
- getConstructors():获取所有的 public 的构造方法
- getDeclaredConstructors():获取所有的构造方法
- 这两种方式获取的都是构造函数的列表,即很多个构造函数放在一起
获取单个构造函数的方式
- getConstructor(…)
- getDeclaredConstructor(…)
- 字节码文件对象就是 xx.class ,比如如果构造方法中传入的参数是 String 类型的,那么这里传入 String.class
通过反射获取的构造方法创建对象
- con.newInstance(参数…)
- con 是之前通过反射获取到的单个的构造器对象
- 注意,默认返回的是一个 object 对象
通过反射构建对象的完整步骤
反射的简单联系
题目要求
代码
package 反射;
import java.sql.Struct;
public class Student {
private String name;
private int age;
private String address;
public Student(String name, int age, String address){
this.name = name;
this.age = age;
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
'}';
}
}
package 反射;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
public class Main {
public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
Class<Student> studentClass = Student.class;
Constructor<Student> constructor = studentClass.getConstructor(String.class, int.class, String.class);
Student student = constructor.newInstance("青霞", 30, "西安");
System.out.println(student);
}
}