A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dangfei 中级黑马   /  2012-2-25 21:27  /  1999 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

刚看了反射,感觉反射是通过对象得到其class,后再通过class得到得到对象的一些东西,如构造方法,成员变量及普通方法(不知可否这样理解),但前提是我们已经知道对象里有什么方法,属性。既然已经知道我们完全可以直接使用,为什么要绕一个弯?

5 个回复

正序浏览
在java里什么都是对象。你写的java类,为啥JVM能运行啊,JVM是你在写类之前就有的东西吧,他知道你写类的时候能起什么名字吗?不知道,但是他却可以调用你的类并运行你的类,也就是说JVM可以不用事先知道你的类名就可以把你的类运行起来。同理,你写类直接调用方法,你是需要知道类名的。也就是说,你是用户,用的客户端,如果别人的类升级了,名字也变了,你是不是要改源代码,可你是用户,你不会。反射就不用了,你只需要改改配置文件就行了。
回复 使用道具 举报
有点类似C++的静态编译和动态编译
回复 使用道具 举报
不知你了解 框架不,或者java的向后扩展,白话解释如下:

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

接口是对类型作了限制,而多态是限制了内容作了规定。
回复 使用道具 举报
大侠们,给解释下呗。。。
回复 使用道具 举报
完全可以直接使用并非如此吧 引入反射肯定他特别之处,不仅仅是让JAVA体系更完整吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马