[转帖]Effective Java 之学习心得_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3902 | 回复: 0   主题: [转帖]Effective Java 之学习心得        下一篇 
Leon
注册用户
等级:少校
经验:1436
发帖:116
精华:7
注册:2013-1-4
状态:离线
发送短消息息给Leon 加好友    发送短消息息给Leon 发消息
发表于: IP:您无权察看 2013-1-4 21:33:05 | [全部帖] [楼主帖] 楼主

1.开发中,可以通过静态工厂方法来代替构造方法获取对象实例。

public static Boolean valueOf(boolean b){
      return b?Boolean.TRUE:Boolean.FALSE;
}


作用:能为重复调用该方法的程序返回相同的对象(主要针对不可变对象,什么是不可变的对象,即对象在其生命周期内所有信息都不可变的对象)。
2.通过私有构造器强化不可实例化的能力

public class UtilityClass{
      private UtilityClass(){
            throw new AssertionError();
      }
      public static final String LOGIN_ERROR = "error";
      public static final String LOGIN_SUCCESS = "success";
      ...
}


用途:阻止该类被实例化。可用于存储系统一些静态变量(改为接口类亦可实现)。
3.消除过期的对象引用(防止内存泄露)

public class Stack{
      private Object[] elements;
      private int size = 0;
      private static final int DEFAULT_CAPITY = 16;
      public stack(){
            elements = new Object[DEFAULT_CAPITY];
      }
      public void push(Object e){
            ensureCapacity();
            elements[size++] = e;
      }
      public Object pop(){
            if(size == 0)
            throw new EmptyStackException();
            Object result = elements[--size];
            elements[size] = null;
            return result;
      }
      private void ensureCapacity(){
            if(elements.length == size)
            elements = Arrays.copyOf(elements,2*size+1);
      }
}
}


4.新代码中尽量不要使用原生态类型(List),可以适当使用泛型
5.可以用SupressWarnings("unchecked")注解来禁止非受检警告,但前提是确保代码的安全。
6.泛型是可擦除的,对于List和List,编译后都是以原生态类型List保存。数组与泛型的最大区别就是数组是具体化的,它在运行时才知道并检查他们的元素类型约束,泛型则只是在编译时强化他们的类型信息,并在运行时擦除其类型信息。数组是协变的,泛型是不可变的。因此,优先使用列表而不是数组。

原文地址:http://blog.sina.com.cn/s/blog_79757ac501016wq4.html




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论