标签:ide code const img 类加载 方式 技术 protected pre
1、 Source 源代码阶段
2、 Class 类对象阶段
3、 runtime 运行时阶段
1、 Class.forName("全类名");
2、 类名.class;
3、 对象.getClass();
多用于对象获取字节码
同一个字节码文件(*.class)在一次程序运行过程中,只会被加载一次。
package top.uaoie.day03;
import top.uaoie.domain.Person;
public class ReflectDome01 {
public static void main(String[] args) throws Exception {
//1. Class.forName("全类名");
Class clazz1 = Class.forName("top.uaoie.domain.Person");
//2. 类名.class;
Class clazz2 = Person.class;
//3. 对象.getClass();
Person p = new Person();
Class clazz3 = p.getClass();
System.out.println(clazz1);
System.out.println(clazz2);
System.out.println(clazz3);
//比较三个对象
System.out.println(clazz1 == clazz2);
System.out.println(clazz1 == clazz3);
}
}
1、 获取所有的成员变量
2、 获取所有的构造方法
3、 获取所有的成员方法
4、 获取类名
package top.uaoie.domain;
public class Person {
public String a;
protected String b;
String c;
private String d;
@Override
public String toString() {
return "Person{" +
"a='" + a + '\'' +
", b='" + b + '\'' +
", c='" + c + '\'' +
", d='" + d + '\'' +
'}';
}
}
package top.uaoie.day03;
import top.uaoie.domain.Person;
import java.lang.reflect.Field;
public class ReflectDome02 {
public static void main(String[] args) throws Exception {
//获取Person的Class对象,此处是在阶段二部分获取的
//也可在第一阶段获取,如:Class.forName("top.uaoie.domain.Person");
Class p = Person.class;
//获取成员变量
Field[] fields = p.getFields();
for (Field field : fields) {
System.out.println(field);
}
System.out.println("---------------------");
Field a = p.getField("a");
System.out.println(a);
//创建一个对象
Person person = new Person();
//获取成员变量a的值
Object value = a.get(person);
System.out.println(value);
//设置成员变量a的值
a.set(person, "这是a的值");
System.out.println(person);
System.out.println("=================");
Field[] declaredFields = p.getDeclaredFields();
for (Field declaredField : declaredFields) {
System.out.println(declaredField);
}
Field d = p.getDeclaredField("d");
//忽略访问权限修饰符
d.setAccessible(true);//暴力反射
Object value2 = d.get(person);
System.out.println(value2);
}
}
标签:ide code const img 类加载 方式 技术 protected pre
原文地址:https://www.cnblogs.com/Juaoie/p/12355337.html