类装载器的演示
package com.reflect;
import org.junit.Test;
/**
* 类装载器的演示
* 1. Bootstrap ClassLoader:引导类装载器,是装载Java核心库到内存中
* 2. Extension ClassLoader:扩展类装载器,用于装载jre/lib/ext目录下的jar文件到内存中
* 3. System ClassLoader:系统类装载器,用于装载运行的Java程序
*/
public class RelectionTest04 {
@Test
public void test() {
// 3. System ClassLoader:系统类装载器
ClassLoader classLoader = ClassLoader.getSystemClassLoader();
System.out.println(classLoader); // AppClassLoader
// 2. Extension ClassLoader:扩展类装载器
ClassLoader parent = classLoader.getParent();
System.out.println(parent); // ExtClassLoader
// 1. Bootstrap ClassLoader:引导类装载器
ClassLoader parent2 = parent.getParent();
System.out.println(parent2); // null
ClassLoader classLoader2 = Integer.class.getClassLoader();
System.out.println(classLoader2); // null
ClassLoader classLoader3 = Person.class.getClassLoader();
System.out.println(classLoader3); // AppClassLoader
}
}
Class类中获取运行时对象中的属性
package com.reflect;
import java.lang.reflect.Field;
import org.junit.Test;
/**
* Class类中获取运行时对象中的属性
* 1. getFields():获取本运行时对象中声明public属性和父类中声明的public属性
* 2. getField(String name):获取本运行时对象中声明的指定名称的public属性
* 3. getDeclaredFields():获取本运行时对象中的所有声明的属性
* 4. getDeclaredField(String name):获取本运行时对象中声明的指定名称的属性
*/
public class ReflectionTest07 {
@Test
public void test() throws Exception {
Class<Person> clazz = Person.class;
Person person = clazz.newInstance();
System.out.println(person);
Field[] fields = clazz.getFields();
for(Field field : fields) {
System.out.println