Class类是一切的反射根源。
Class类表示什么?
很多的人--可以定义一个Person类(有年龄,性别,姓名等)
很多的车--可以定义一个Car类(有发动机,颜色,车轮等)
很多的类--Class类(类名,构造方法,属性,方法)
得到Class类的对象有三种方式:
第一种:Object类中的getClass()方法
第二种:类.class
第三种:通过Class类的forName()方法
为什么要学习反射?
反射可以通过一个Class类的对象反过来获取目标类的类信息(私有的公有的属性,方法等);
javaEE框架源码大多是采用反射的方式实现,学习此可为学习javaEE框架做铺垫
import org.junit.Test;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Modifier;
public class ReflectionDemo {
/**
* 三种获取Class对象的的方式:
* 1、对象.getClass()
* 2、类名.class
* 3、Class.forName("完整的类路径")
*/
@Test
public void getClassTest() {
//第一种:对象.getClass()
Dog dog = new Dog("wangwang", 2, "yellow");
Class<? extends Dog> aClass = dog.getClass();
//第二种:类名.class
Class<Dog> dogClass = Dog.class;
//第三种:Class.forName("完整的类路径")
try {
Class<?> aClass1 = Class.forName("com.vince.Dog");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}