您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
06_反射_获取字节码Class对象的三种方式
发布时间:2022-07-03 15:14:46编辑:雪饮阅读()
首先建立两个class用于对比最后获取的class对象在同字节码和不同字节码下的地址是否相同。
Person.java
package day1.reflection;
public class Person {
//首先至少类中有成员属性,才能在ide中快捷的进行各种有参和无参的快捷操作,这里哥傻了一下下,都没有定义任何属性,还在idea上面找半天构造不同构造的地方。。。
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public Person(String name) {
this.name = name;
}
public Person() {
}
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;
}
}
然后
Person2.java
package day1.reflection;
public class Person2 {
//首先至少类中有成员属性,才能在ide中快捷的进行各种有参和无参的快捷操作,这里哥傻了一下下,都没有定义任何属性,还在idea上面找半天构造不同构造的地方。。。
private String name;
private int age;
public Person2(String name, int age) {
this.name = name;
this.age = age;
}
public Person2(String name) {
this.name = name;
}
public Person2() {
}
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;
}
}
然后创建index.java作为调用入口,以三种获取字节码Class对象的示例:
package day1.reflection;
public class index {
public static void main(String[] args) throws ClassNotFoundException {
Class cls1=Class.forName("day1.reflection.Person");
Class cls2=Person.class;
Person p1=new Person();
Class cls3=p1.getClass();
Class cls4=new Person2().getClass();
System.out.println(cls1);
System.out.println(cls2);
System.out.println(cls3);
System.out.println(cls4);
System.out.println(cls1==cls2 && cls2==cls3);
System.out.println(cls1==cls2 && cls2==cls3 && cls3==cls4);
}
}
运行输出:
class day1.reflection.Person
class day1.reflection.Person
class day1.reflection.Person
class day1.reflection.Person2
true
false
Process finished with exit code 0
关键字词:java,反射