1.写一个Person类,用于测试,如下
package com.bean;
public class ReflectDemo {
public static void main(String[] args) {
getClassObject_3();
}
/*
* 获取字节码方式一:通过Object类中的getClass()方法 此方式必须要明确具体的类, 并且需要创建对象
*/
public static void getClassObject_1() {
Person p = new Person();
Class classP = p.getClass();
Person p2 = new Person();
Class classP2 = p2.getClass();
System.out.println(classP == classP2);
}
/*
* 方式二:任何数据类型,都具备一个静态的属性 .class来获取其对应的Class对象 还是需要明确用到类中的静态成员
*/
public static void getClassObject_2() {
Class classP = Person.class;
Class classP2 = Person.class;
System.out.println(classP == classP2);
}
/*
* 方式三:只要通过给定的类的字符串名称就可以获取该类 可用Class 类的方法完成 forName(); 需要把类名写全,写上包名
*/
public static void getClassObject_3() {
Class classP = null;
Class classP2 = null;
String className = "com.bean.Person";
try {
classP = Class.forName(className);
classP2 = Class.forName(className);
} catch (ClassNotFoundException e) {
System.out.println("此类不存在");
e.printStackTrace();
}
System.out.println(classP == classP2);
}
}
public class Person {
private int age;
private String name;
public Person() {
System.out.println("Person run");
}
public Person(int age, String name) {
this.age = age;
this.name = name;
System.out.println("Person param run");
}
public void show() {
System.out.println(name + "……show run....");
}
private void method() {
System.out.println("method run.....");
}
public void paramMethod(String str, int num) {
System.out.println("paramMethod run....." + str + ":" + num);
}
public static void staticMethod() {
System.out.println("staticMethod ....run.....");
}
}
2.获取一个类的字节码文件对象,如下
package com.bean;
public class ReflectDemo {
public static void main(String[] args) {
getClassObject_3();
}
/*
* 获取字节码方式一:通过Object类中的getClass()方法 此方式必须要明确具体的类, 并且需要创建对象
*/
public static void getClassObject_1() {
Person p = new Person();
Class classP = p.getClass();
Person p2 = new Person();
Class classP2 = p2.getClass();
System.out.println(classP == classP2);
}
/*
* 方式二:任何数据类型,都具备一个静态的属性 .class来获取其对应的Class对象 还是需要明确用到类中的静态成员
*/
public static void getClassObject_2() {
Class classP = Person.class;
Class classP2 = Person.class;
System.out.println(classP == classP2);
}
/*
* 方式三:只要通过给定的类的字符串名称就可以获取该类 可用Class 类的方法完成 forName(); 需要把类名写全,写上包名
*/
public static void getClassObject_3() {
Class classP = null;
Class classP2 = null;
String className = "com.bean.Person";
try {
classP = Class.forName(className);
classP2 = Class.forName(className);
} catch (ClassNotFoundException e) {
System.out.println("此类不存在");
e.printStackTrace();
}
System.out.println(classP == classP2);
}
}