获取Class字节码对象的三种方式
1. 三种方法:
1. Class.forName(“全类名”):将字节码文件加载进内存,返回Class对象
多用于配置文件,将类名定义在配置文件中。读取文件,加载类
2. 类名.class():通过类名的属性class获取
多用于参数的传递
3. 类名.class():getClass()方法在Object类中定义着
多用于对象的获取字节码的方式
2. 相关代码:
1 Person类代码:
public class Person {
private String name;
private int age;
/* public String a;
public String b;
public String c;
private String d;
*/
public Person() {
}
public Person(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;
}
/*public String toString(){
return "Person{"+
"name='"+name+'\''+
", age="+age+
'}';
}*/
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
2 ReflectDemo1类代码
package cn.itcast.reflect;
import cn.itcast.domain.Person;
import java.util.concurrent.Callable;
/**
* @Author:MCoder
* @Date: 2020/3/10 21:32
* @Version: 1.0
*/
public class ReflectDemo1 {
public static void main(String[] args) throws Exception {
// 1.Class.forName("全类名")
Class cls1=Class.forName("cn.itcast.domain.Person");
System.out.println(cls1);
//2.类名.class
Class cls2= Person.class;
System.out.println(cls2);
// 3.对象.getClass()
Person p=new Person();
Class cls3=p.getClass();
System.out.println(cls3);
// ==比较三个对象
System.out.println(cls1==cls2);//true
System.out.println(cls2==cls3);//true
}
}
3. 运行结果:

本文介绍了在Java中获取Class字节码对象的三种常见方法:通过Class.forName()加载全类名,使用类名.class属性,以及调用对象的getClass()方法。这三种方式分别适用于不同的场景,如配置文件、参数传递和对象获取。

被折叠的 条评论
为什么被折叠?



