1.获取class对象
/**
* @author qx
* @date 2023-05-05
* @Descripion: 反射获取class
*/
public class Test {
public static void main(String[] args) throws ClassNotFoundException {
// Class类中的静态方法
Class<?> c = Class.forName("seven.Student");
System.out.println(c);
// 直接调用class
Class<Student> aClass = Student.class;
System.out.println(aClass);
// 对象调用getClass方法
Student student = new Student();
Class<? extends Student> studentClass = student.getClass();
System.out.println(studentClass);
}
}
程序执行结果:
class seven.Student
class seven.Student
class seven.Student
2.获取类中的构造器
获取全部public的构造器 getConstructors()
class Student {
private String name;
private int age;
private Student() {
System.out.println("无参数构造器执行!");
}
public Student(String name, int age) {
System.out.println("有参数构造器执行!");
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class TestStudent {
public static void main(String[] args) {
//获取类对象
Class<Student> c = Student.class;
// 获取类中全部公开的构造器
Constructor<?>[] constructors = c.getConstructors();
//遍历
for (Constructor<?> constructor : constructors) {
// getParameterCount获取参数个数
System.out.println(constructor.getName() + "=>" + constructor.getParameterCount());
}
}
}
程序执行结果:
seven.Student=>2
获取全部的构造器 包含私有 getConstructors()
class Student {
private String name;
private int age;
private Student() {
System.out.println("无参数构造器执行!");
}
public Student(String name, int age) {
System.out.println("有参数构造器执行!");
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
public class TestStudent {
public static void main(String[] args) {
//获取类对象
Class<Student> c = Student.class;
// 获取类中全部的构造器 包含私有
Constructor<?>[] constructors = c.getDeclaredConstructors();
//遍历
for (Constructor<?> constructor : constructors) {
// getParameterCount获取参数个数
System.out.println(constructor.getName() + "=>" + constructor.getParameterCount());
}
}
}
程序执行结果:
seven.Student=>0
seven.Student=>2
获取类中无参数构造器 getConstructor()
public class TestStudent {
public static void main(String[] args) throws NoSuchMethodException {
//获取类对象
Class<Student> c = Student.class;
// 获取类中无参数构造器
Constructor constructor = c.getConstructor();
System.out.println(constructor.getName() + "=>" + constructor.getParameterCount());
}
}
程序执行结果
seven.Student=>0
获取类中无参数私有构造器 getDeclaredConstructor
public class TestStudent {
public static void main(String[] args) throws NoSuchMethodException {
//获取类对象
Class<Student> c = Student.class;
// 获取类中无参数构造器
Constructor constructor = c.getDeclaredConstructor();
System.out.println(constructor.getName() + "=>" + constructor.getParameterCount());
}
}