Java反射机制的优点

java的反射机制就是增加程序的灵活性,避免将程序写死到代码里,
例如: 实例化一个 person()对象, 不使用反射, new person(); 如果想变成 实例化 其他类, 那么必须修改源代码,并重新编译。
      使用反射: class.forName("person").newInstance(); 而且这个类描述可以写到配置文件中,如 **.xml, 这样如果想实例化其他类,只要修改配置文件的"类描述"就可以了,不需要重新修改代码并编译。

增加程序的灵活性。
如struts中。请求的派发控制。
当请求来到时。struts通过查询配置文件。找到该请求对应的action。已经方法。
然后通过反射实例化action。并调用响应method。
如果不适用反射,那么你就只能写死到代码里了。
所以说,一个灵活,一个不灵活。
很少情况下是非用反射不可的。大多数情况下反射是为了提高程序的灵活性。
因此一般框架中使用较多。因为框架要适用更多的情况。对灵活性要求较高。

创建对象的3中方式:

  • 使用new的方式,最为常见。

  • 使用对象的clone()方法。

  • 使用反射机制的newInstance()方法。

举个简单的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package  com.java;
 
public  class  Demo
{
     /**
      * 通过两种方式创建对象,以做对比。
      * @param args
      * @throws ClassNotFoundException
      * @throws InstantiationException
      * @throws IllegalAccessException
      */
     public  static  void  main(String[] args)  throws  ClassNotFoundException,
             InstantiationException, IllegalAccessException
     {
         // 我们认为这种方方式,Demo类和Basic类是耦合的,
         // 编译Demo类时,Basic类必须存在,拓展性不强。
         Basic basic0 =  new  Basic();
 
         
         // 很明显这种方式,在编译Demo类时,并不需要
         // Basic类的存在,只要在运行Demo类时,存在即可,
         // 所以我们认为Demo类和Basic是松耦合的,
         // 为后期的拓展提供了空间,好处显而易见。这么说,如果没有
         // 反射机制,就没有struts、spring、hibernate等等这些web框架。
         Class clazz = Class.forName( "com.java.Basic" );
 
         Basic basic1 = (Basic) clazz.newInstance();
     }
}
转:http://zhidao.baidu.com/question/478254128.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值