2015070303 - EffactiveJava笔记 - 第53条 接口优于反射机制
2015-07-03 23:47
495 查看
20150703 星期五 北京
反射机制,提供通过运行程序访问关于已经装载的类的信息的能力.
反射机制,允许一个类使用另外一个类,即使当前者被编译的时候后者还根本不存在.
反射付出的代价:
1.丧失了编译时类型检查的好处.包括异常检查,程序调用不存在的类或者不可访问的方法,在运行时会失败.除非采取特殊的预防措施.
2.执行反射访问所需要的代码非常笨拙和冗长.体现在编写乏味,阅读困难!
3.性能损失.反射调用的方法比普通方法调用慢上很多.多少倍很难说.
反射功能应用的场景?
1.反射功能只是在代码设计阶段被用到,通常,普通应用程序在运行时不应该以反射方式访问对象.
2.如果只是以有限方式使用反射,付出少许代价,但是获取极大收益.(比如不同系统之间传递数据,如果以json字符串传递,获取数据后要组成本系统的对象,属性赋值,要么ifelse属性进行判断,要么通过反射进行赋值.个人经验)
有些程序,必须用到编译时无法获取的类,但是编译时以存在的接口或者超类,来引用这个类.此时,可以使用反射创建实例,然后通过接口或者超类,以正常形式访问实例.如果构造方法不带参数,那么可以使用Class.newInstance()即可.
反射,是功能强大的机制,对于特定任务,是非常必要的.如果编写程序必须要与编译时未知的类工作,如有可能,仅仅使用反射来实例化对象,而访问对象时使用编译时已知的接口或者超类.
(反射就是特种部队,必要的场合使用,其他的时候使用正规军即可!使用特种部队,付出的代价总是相对比较高昂的!)
反射机制,提供通过运行程序访问关于已经装载的类的信息的能力.
反射机制,允许一个类使用另外一个类,即使当前者被编译的时候后者还根本不存在.
反射付出的代价:
1.丧失了编译时类型检查的好处.包括异常检查,程序调用不存在的类或者不可访问的方法,在运行时会失败.除非采取特殊的预防措施.
2.执行反射访问所需要的代码非常笨拙和冗长.体现在编写乏味,阅读困难!
3.性能损失.反射调用的方法比普通方法调用慢上很多.多少倍很难说.
反射功能应用的场景?
1.反射功能只是在代码设计阶段被用到,通常,普通应用程序在运行时不应该以反射方式访问对象.
2.如果只是以有限方式使用反射,付出少许代价,但是获取极大收益.(比如不同系统之间传递数据,如果以json字符串传递,获取数据后要组成本系统的对象,属性赋值,要么ifelse属性进行判断,要么通过反射进行赋值.个人经验)
有些程序,必须用到编译时无法获取的类,但是编译时以存在的接口或者超类,来引用这个类.此时,可以使用反射创建实例,然后通过接口或者超类,以正常形式访问实例.如果构造方法不带参数,那么可以使用Class.newInstance()即可.
反射,是功能强大的机制,对于特定任务,是非常必要的.如果编写程序必须要与编译时未知的类工作,如有可能,仅仅使用反射来实例化对象,而访问对象时使用编译时已知的接口或者超类.
(反射就是特种部队,必要的场合使用,其他的时候使用正规军即可!使用特种部队,付出的代价总是相对比较高昂的!)
相关文章推荐
- (leetcode)contains duplicateIII[java]
- 在web项目中集成Spring
- springMVC第一天
- Java内存模型
- Java中函数的重载
- java中抽象类一般什么时候用到,用抽象类有什么好处?
- Java可变长参数注意事项
- 2015070302 - EffactiveJava笔记 - 第52条 通过接口引用对象(2)
- 一句话讲清楚什么是JavaEE
- [Java]学习笔记,随笔【十】
- 为什么用Spring来管理Hibernate?
- spring+thymeleaf
- LeetCode(26) Remove Duplicates from Sorted Array
- 我应该怎样理解:java中的new???
- java的多线程机制上
- java&postgresql时区总结
- java&postgresql时区总结
- SpringMVC使用hibrenate validation进行验证
- [Java入学测试] 技术博客书写规则
- 2015070301 - EffactiveJava笔记 - 第52条 通过接口引用对象(1)