您的位置:首页 > 编程语言 > Java开发

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

2015-07-03 23:47 495 查看
20150703 星期五 北京

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

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

反射付出的代价:

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

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

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

反射功能应用的场景?

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

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

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

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

(反射就是特种部队,必要的场合使用,其他的时候使用正规军即可!使用特种部队,付出的代价总是相对比较高昂的!)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: