关于反射
比如有很多个汽车的实例:宝马、大众、丰田等,现在需要有一个方法根据一个参数获得其中一种车
不使用反射的写法:
public Car getCar(String name) { if(name.equals("宝马") { return new 宝马(); } if(name.equals("大众") { return new 大众(); } }
|
如果汽车的实例非常多的话,需要加上很多的if判断
使用反射的写法:
public Car getCar(String name) { Constructor cos = clazz.getConstructor(Class.forName(name)); Object obj = cos.newInstance(); return (Car) obj; }
|
汽车的实例有多少该方法都不需要改变
反射能动态生成实例的意思是,在程序运行的时候,可以根据需要和条件创建新的实例。像第一个例子,如果你需要获得一个吉利汽车,你必须重新修改方法,而使用反射就不需要改变