为了账号安全,请及时绑定邮箱和手机立即绑定

求教一个小问题

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

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

正在回答

4 回答

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

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


0 回复 有任何疑惑可以回复我~
#1

鲜衣 提问者

非常感谢!
2015-07-30 回复 有任何疑惑可以回复我~
#2

鲜衣 提问者

我是化学专业毕业了自学Java的,感觉知识点好乱,连不起来。请问你刚学的时候会遇到这种情况吗? 有什么比较好的方法去应对?如果有空可以在此指导一下,谢谢了!
2015-07-30 回复 有任何疑惑可以回复我~
#3

阳少兮_s 回复 鲜衣 提问者

如果你是刚学的话我不建议你看反射 一是对于新手来说不好理解,二是如果工作了 反射用的也少,或者说根本就用不上。等到你熟悉了java或者单位让你用反射的时候再用也不迟。
2015-07-31 回复 有任何疑惑可以回复我~
#4

阳少兮_s 回复 鲜衣 提问者

我觉得马士兵的视频比较适合新手,他讲的挺好的。你先不用把JAVA基础全弄明白,什么SWING,什么多线程,什么反射,这些你都不用看,至少现在不用。
2015-07-31 回复 有任何疑惑可以回复我~
#5

鲜衣 提问者 回复 阳少兮_s

非常感谢你!(*^__^*)
2015-08-18 回复 有任何疑惑可以回复我~
#6

鲜衣 提问者 回复 阳少兮_s

如果针对找工作,应该侧重那些课程呢?
2015-08-18 回复 有任何疑惑可以回复我~
查看3条回复

我知道了写#是因为前面写的是id不知道问题怎么删除

griatyiz

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~
#1

鲜衣 提问者

虽然有很多不理解,但是还是要谢谢你!
2015-08-18 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求教一个小问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信