求教一个小问题

来源:1-1 Class类的使用

鲜衣

2015-07-28 11:45

直接用foo1.print();就可以执行print方法了。

先创建实例对象c1,再用newInstance方法创建对象foo,再调用print方法。这样有什么好处或者说是在什么情况下会这样使用?

写回答 关注

2回答

  • 阳少兮_s
    2015-07-30 16:32:52
    已采纳

    以下所说的只是自己的理解。如果有不对的情况请大家指正我。

    一般情况下我们都会使用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等也是。。


    鲜衣 回复阳少兮_s

    如果针对找工作,应该侧重那些课程呢?

    2015-08-18 00:20:59

    共 6 条回复 >

  • Me_轩
    2015-08-11 10:17:22

    JAVA反射会让你更加了解许多 框架机制, 让你明白其实现原理。 他解剖了java类 可以自由发挥 ,运用得到可以减少很多代码的编写,方便了编程。可以写很多公用的功能点。 这里老师只是为了讲课才这么讲的 ,这是我们知道foo这个类里面有print,如果我们不知道呢 ,我们需要调用print方法怎么办呢。或许会遇到这样的需求,或者类似的,这都是要去解决的额!

    鲜衣

    虽然有很多不理解,但是还是要谢谢你!

    2015-08-18 09:53:21

    共 1 条回复 >

反射——Java高级开发必须懂的

反射,Java高级开发必须要懂的知识点,学好Java高级课程的基础

151466 学习 · 335 问题

查看课程

相似问题