java中,为什么说反射是动态的生成实例动态的调用?

2024-11-24 13:22:04
推荐回答(2个)
回答1:

反射么 就是根据你的类来为你创建消正则对象
动态就是灵活的,直接写好的不能变的就是静态的
反射一般拿棚配合泛型使用
Class.forName(className).newInstance()
你传入什么类 就能对应清或生成这个类的对象

回答2:

比如有很多个汽车的实例:宝马、大众、丰田知橘锋等,现在需要有一个方法根据一个参数获得其中一种车
不使用反射的写法:
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;
}
汽车的实例有多少该方法都不需要改伍巧变

反射能动态生成实例的意思是,在程序运行的时候,可以根据需要和条件创建新的实例。像第一个例子,如果你需要获得一个吉利汽车,你必须重新修改搭晌方法,而使用反射就不需要改变