2015070303 - EffactiveJava笔记 - 第53条 接口优于反射机制

   20150703 星期五 北京

   反射机制,提供通过运行程序访问关于已经装载的类的信息的能力.

   反射机制,允许一个类使用另外一个类,即使当前者被编译的时候后者还根本不存在.

   反射付出的代价:

   1.丧失了编译时类型检查的好处.包括异常检查,程序调用不存在的类或者不可访问的方法,在运行时会失败.除非采取特殊的预防措施.

   2.执行反射访问所需要的代码非常笨拙和冗长.体现在编写乏味,阅读困难!

   3.性能损失.反射调用的方法比普通方法调用慢上很多.多少倍很难说.

 

   反射功能应用的场景?

   1.反射功能只是在代码设计阶段被用到,通常,普通应用程序在运行时不应该以反射方式访问对象.

   2.如果只是以有限方式使用反射,付出少许代价,但是获取极大收益.(比如不同系统之间传递数据,如果以json字符串传递,获取数据后要组成本系统的对象,属性赋值,要么ifelse属性进行判断,要么通过反射进行赋值.个人经验)

   有些程序,必须用到编译时无法获取的类,但是编译时以存在的接口或者超类,来引用这个类.此时,可以使用反射创建实例,然后通过接口或者超类,以正常形式访问实例.如果构造方法不带参数,那么可以使用Class.newInstance()即可.

 

   反射,是功能强大的机制,对于特定任务,是非常必要的.如果编写程序必须要与编译时未知的类工作,如有可能,仅仅使用反射来实例化对象,而访问对象时使用编译时已知的接口或者超类.

   (反射就是特种部队,必要的场合使用,其他的时候使用正规军即可!使用特种部队,付出的代价总是相对比较高昂的!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值