黑马程序员_反射

---------------------- android培训java培训、期待与您交流! ----------------------

 

Reflex

 * 反射:

 *     反射就是把java类中的各种成分映射成相应的java类。例如,一个

 *     java类中用一个Class类的对象来表示,一个类中的组成部分:成员

 *     变量,方法,构造方法,包等等信息也用一个个的java类来表示,

 *     就像汽车是一个类,汽车中的发动机,变速箱等等也是一个个的类。

 *     表示java类的Class类显然要提供一系列的方法,来获得其中的变量,

 *     方法,构造方法,修饰符,包等信息,这些信息就是用相应类的实例

 *     对象来表示,它们是FieldMethodConstructorPackage等等。

 *    

 *     一个类中的每个成员都可以用相应的反射API类的一个实例对象来表示。

 *     通过调用Class类的方法可以得到这些实例的对象后,得到这些实例对象

 *     后有什么用呢?怎么用呢?

 *    

 * Constructor

 *     Constructor类代表某个类中的一个构造方法

 *     得到某个类所有的构造方法:

 *      例子:Constructor[] constructors = Class.forName("java.lang.String").getConstructor();

 *     得到某一个构造方法:

 * 例子:

Constructor constructor = Class.forName("java.lang.String").getConstructor(StringBuffer.class);

 *        //获得方法时要用到类型

 *     创建实例对象:

 *        通常方式:String str = new String(new StringBuffer("abc"));

 *        反射方式: String str = (String)constructor.newInstance(new StringBuffer("abc"));

 *         //调用获得的方法时要用到上面相同类型的实例对象

 *     Class.newInstance()方法:

  例子:String obj = (String)Class.forName("java.lang.String").class.newInstance();

 *        该方法内部先得到默认的构造方法,然后用该构造方法创建实例对象。

 *        该方法内部的具体代码是怎样写的呢?用到了缓存机制来保存默认构造方法的实例对象。

 *        

 

 * 反射的作用-->实现框架功能

 * 1,框架与框架要解决的核心问题

 *   我做房子卖给用户住,由用户自己安装门窗和空调,我做的房子就是框架,用户

 *   需要使用我的框架,把门窗插入进我提供的框架中。框架与工具类有区别,工具

 *   类被用户的类调用,而框架则是调用用户提供的类。

 * 2,框架要解决的核心问题

 *   我在写框架(房子)时,你这个用户可能还在上小学,还不会写程序呢?我写的

 *   框架程序怎样调用到你以后写的类(门窗)呢?

 *   因为在写程序时无法知道要被调用的类名,所以,在程序中无法直接new某个

 *   类的实例对象了,而要用反射方式来做。

 * 3,综合案例

 *  先直接用new语句创建ArrayListHashSet的实例对象,演示用eclipse自动生成

 *   ReflectPoint类的equalshashcode方法,比较两个集合的运行结果差异。

 *   然后改为采用配置文件加反射的方式创建ArrayListHashSet的实例对象,比较

 *   观察运行结果差异。

 *   引入了eclipse对源文件的管理方式的讲解。

 *  

 * 当一个对象被存储进HashSet集合中后,就不能修改这个对象中的那些参与计算

 * 哈希值的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中的哈希值

 * 就不同了,在这种情况下,即使在contains方法使用该对象的当前引用作为的参数去

 * HashSet集合中检索对象,也将返回找不到对象的结果,这也会导致无法从HashSet集合中

 * 单独删除当权对象,从而造成内存泄漏。

 

---------------------- android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值