为什么要有反射?
在程序运行之前,如果不知道对象或类应该属于哪个类,只有在运行过程获得信息被确认,这时就可以使用反射,动态加载需要的类。
如果获得类对象?
这里的类对象指的不是类的实例,而是类的类型对象。它有三个方式可以获得,分被对应在类加载的三个阶段:
类加载之前(源码阶段):
Class.forName("全类名");
类对象阶段:
类名.class
运行时:
new Object().getClass()
使用类对象
Class clz = Class.forName("com.chenshuyi.reflect.Apple");
Method method = clz.getMethod("setPrice", int.class);
Constructor constructor = clz.getConstructor();
Object object = constructor.newInstance();
method.invoke(object, 4);