首先创建一个JavaBean对象,Student类
public class Student {
private String name;
private int age;
public Student() {
// 默认构造函数
}
public Student(String name, int age) {
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 +
'}';
}
}
获取Java类的字节码文件有三种方法,分别是全类名、类名.class和对象.getClass()。
其中最常见的方法是全类名的方法。
一、全类名
所谓全类名,即包名+类名
比如在我的代码项目中,包名为com.example.myreflect1,类名为Student
通过Class.forname(“全类名”)来得到
//全类名:包名+类名(最为常用)
//com.example.myreflect1.Student
Class<?> clazz = Class.forName("com.example.myreflect1.Student");
二、类名.class
//类名.class
Class<Student> clazz2 = Student.class;
三、对象.getClass()
先创建一个实例对象,在通过对象获得
//对象.getClass()
Student stu = new Student();
Class<?> clazz3 = stu.getClass();
四、使用任何一种方法得到的类字节码文件都是相同的
System.out.println(clazz==clazz2);
System.out.println(clazz2);
System.out.println(clazz3);
代码输出结果:
完整代码
package com.example.myreflect1;
public class MyReflectDemo1
{
public static void main(String[] args) throws ClassNotFoundException {
//全类名:包名+类名(最为常用)
//com.example.myreflect1.Student
Class<?> clazz = Class.forName("com.example.myreflect1.Student");
//类名.class
Class<Student> clazz2 = Student.class;
//对象.getClass()
Student stu = new Student();
Class<?> clazz3 = stu.getClass();
System.out.println(clazz==clazz2);
System.out.println(clazz2);
System.out.println(clazz3);
}
}