IT追梦者

Programming
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年10月29日

摘要: 是否Immutable对象:a. 如果对象应该是常量,则应该设计成Immutable;b. 如果对象的状态会频繁的改变,则应设计成mutable的,比如StringBuffer。c. 如果一个对象很大,那么设计成Immutable的时候要格外谨慎。为了改变对象状态,大的Immutable对象需要拷贝这可能会耗费较多的资源。d. 为了保证封装性,当方法返回一个Collection时应该保证其Immutable特性。1. 属性都定义成private、final的,防止对象类的方法改变属性值、或者通过反射setAccessible改变可见性。public class ImmutablePerson{ 阅读全文

posted @ 2011-10-29 16:16 星龙冰 阅读(330) 评论(0) 推荐(0)

摘要: 按照作用域,final变量分为:1.class范围的static final var;2.instance范围的final var;3.method范围的final var包含final parameters;其中类级别的final在整个类的命名空间只有一个实例,instance final则每个对象都有各自final的实例,且可以各不相同,method中的final则针对每次调用有一个final变量。如下代码所示:在每个ClassLoader 加载FinalVariable时classInt被初始化一次以后不会再改变;对于instanceInt,每次创建FinalVariable对象,各个对 阅读全文

posted @ 2011-10-29 16:02 星龙冰 阅读(556) 评论(0) 推荐(0)

摘要: 使用的是oracle jdk7具体版本是:(build 1.7.0_01-b08)1.方法作用于的final变量:源码: public void methodScopeFinal(){ final int age = 22; final String firstName = "xu"; int nextAge = age+1; String name = firstName+"guoping"; }javap -c反编译得到的jvm指令, 可以看出jvm指令中没有包含对两个final变量(方法作用于中的final成为变量是合适的,因为很多时候需要根据不同 阅读全文

posted @ 2011-10-29 11:11 星龙冰 阅读(708) 评论(0) 推荐(0)