鲜衣
2015-07-28 11:45
直接用foo1.print();就可以执行print方法了。
先创建实例对象c1,再用newInstance方法创建对象foo,再调用print方法。这样有什么好处或者说是在什么情况下会这样使用?
以下所说的只是自己的理解。如果有不对的情况请大家指正我。
一般情况下我们都会使用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等也是。。
JAVA反射会让你更加了解许多 框架机制, 让你明白其实现原理。 他解剖了java类 可以自由发挥 ,运用得到可以减少很多代码的编写,方便了编程。可以写很多公用的功能点。 这里老师只是为了讲课才这么讲的 ,这是我们知道foo这个类里面有print,如果我们不知道呢 ,我们需要调用print方法怎么办呢。或许会遇到这样的需求,或者类似的,这都是要去解决的额!
反射——Java高级开发必须懂的
151466 学习 · 335 问题
相似问题