黑马程序员技术交流社区

标题: 反射疑问 [打印本页]

作者: dangfei    时间: 2012-2-25 21:27
标题: 反射疑问
刚看了反射,感觉反射是通过对象得到其class,后再通过class得到得到对象的一些东西,如构造方法,成员变量及普通方法(不知可否这样理解),但前提是我们已经知道对象里有什么方法,属性。既然已经知道我们完全可以直接使用,为什么要绕一个弯?
作者: 泮和顺    时间: 2012-2-26 08:20
完全可以直接使用并非如此吧 引入反射肯定他特别之处,不仅仅是让JAVA体系更完整吧

作者: dangfei    时间: 2012-2-27 11:13
大侠们,给解释下呗。。。
作者: tanlei200620    时间: 2012-2-27 12:27
不知你了解 框架不,或者java的向后扩展,白话解释如下:

在类中传入一个接口的子类对象, 是jvm 知道至少可以按照这个接口的类型来处理,运行时根据子类对象的方法来运行,体现了多态。
但是反射呢,让jvm在编译的时候才知道,传进了一个定义了某些字段或方法的类对象,因为在调用传入的对象之前,没办法提前知道,只好出了这个技术,命名其为反射,其实也可以命名为侦查的。这也是多态的体现

接口是对类型作了限制,而多态是限制了内容作了规定。
作者: 蒙武辉    时间: 2012-2-27 12:36
有点类似C++的静态编译和动态编译
作者: 戚雪晖    时间: 2012-2-28 08:48
在java里什么都是对象。你写的java类,为啥JVM能运行啊,JVM是你在写类之前就有的东西吧,他知道你写类的时候能起什么名字吗?不知道,但是他却可以调用你的类并运行你的类,也就是说JVM可以不用事先知道你的类名就可以把你的类运行起来。同理,你写类直接调用方法,你是需要知道类名的。也就是说,你是用户,用的客户端,如果别人的类升级了,名字也变了,你是不是要改源代码,可你是用户,你不会。反射就不用了,你只需要改改配置文件就行了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2