求教一个小问题
直接用foo1.print();就可以执行print方法了。
先创建实例对象c1,再用newInstance方法创建对象foo,再调用print方法。这样有什么好处或者说是在什么情况下会这样使用?
直接用foo1.print();就可以执行print方法了。
先创建实例对象c1,再用newInstance方法创建对象foo,再调用print方法。这样有什么好处或者说是在什么情况下会这样使用?
2015-07-28
以下所说的只是自己的理解。如果有不对的情况请大家指正我。
一般情况下我们都会使用new Foo().print();这种情况下是我们肯定使用Foo的对象的时候我们会这么用。
但是当我们需要在运行时才能确认哪个类的print方法时会用到反射。
比如现在有个方法,根据我们传递的类名来调用方法
public void print(String className) {
Class<?> c = Class.forName(className);
......
}
这样,只要你传入正确的类名,不仅能调用Foo类的print方法,还可以使用Student类、User类的print方法
应用场景之一就是JDBC加载驱动
Class.forName("com.mysql.jdbc.Driver");
Class.forName("com.oracle.jdbc.OracleDriver");
根据类名找到不同的JDBC驱动,然后调用某方法。
还有其他应用场景,我觉得应该是Spring等,配置文件根据bean id来加载具体的类
可能web.xml等也是。。
举报