- 概念:主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
- 反射是java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会有大麻烦!
利用反射来进行对象实例化(达到解耦合的作用):
源代码:
/**
* 有了反射之后以后在进行对象实例化后,不再只是单独用关键字new来进行了
* 反射同样可以完成
* @author Dujiang
*
*/
class Food {
public Food(){
System.out.println("=========Food类的无参构造==========");
}
@Override
public String toString(){
return "这是一盘子shit" ;
}
}
public class TestDemo {
public static void main(String[] args) throws Exception {
Class<?> cls = Class.forName("Food") ;
Object obj = cls.newInstance() ; //相当于用new来调用无参构造实例化
Food food = (Food) obj ; //向下转型
System.out.println(food);
}
}