易截截图软件、单文件、免安装、纯绿色、仅160KB

《Effective Java》笔记

第一章 引言
(By wind5shy:http://blog.csdn.net/wind5shy)
 
第二章 创建和销毁对象
(By wind5shy:http://blog.csdn.net/wind5shy)
第1条:考虑用静态工厂方法代替构造函数
 
好处:
静态工厂方法有名字,表达更清楚。
不需创建新的对象。
可以返回原返回类型的子类型对象。应用:1.返回类型定义为接口,则返回的所有实例对象的细节都可以被隐藏,如Collections。2.返回对象所属的类在写该静态方法时可以不存在。
缺点:
类如果不含public或者protected构造函数,就不能被子类化,如不能实例化Collections的任一实现类。
与其他静态方法没有区别,不像构造函数一样明显。但使用标准的命名习惯:valueOf和getInstance,可以客服一定的缺点。
 
第2条:使用私有构造函数强化singleton属性
 
将构造函数设为private是为了避免其他类调用已确保唯一性(不写显示构造函数则系统提供默认构造函数且为public!)。
两种实现singleton的方法:
1.
public static final Singleton INSTANCE = new Singleton();
private Singleton(){}
构造方法只在初始化INSTANCE时被调用一次。
2.
private static final Singleton INSTANCE = new Singleton();
private Singleton(){}
public static getInstance(){ return INSTANCE};
1好处在于类成员明确表明了类是一个singleton;而2则提供了灵活性,允许在不改变API的情况下改变类是否为singleton。
singleton类在序列化的时候需要提供readResolve()确保singleton性,否则一个序列化的实例在每次反序列化的时候,都会导致创建一个新的实例。
private Object readResolve() throws ObjectStreamException{ return INSTANCE;}
 
第3条:通过私有构造函数强化不可实例化的能力
 
       缺点:类不能被子类化,因为子类的构造函数需要调用超类的构造函数。
 
第4条:避免创建重复的对象
 
       String s = “s”;优于String s = new String(“s”);因为后者每次都创建新的对象而前者不是。
       同时提供静态工厂函数和构造函数的非可变类,使用静态工厂函数可以避免每次创建新的对象,如Boolean.valueOf(String)优于Boolean(String)。
       不会被修改的可变类
  &nbs


相关文档:

JAVA值传递(call by value)

public class Foo {
 static void operate(StringBuffer x,StringBuffer y){
  x.append(y);
  y=x;
 }
 public static void main(String args[]){
  StringBuffer a = new StringBuffer("A");
  StringBuffer b = new StringBuffer("B");
  
& ......

How to use Java as NT SERVICE


 service = new
 Service();  
        thread=new
 Thread(service);  
        try
  
        {  
   ......

java回调机制


java回调机制
 
回调概念:
软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。同步调用是一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用;回调是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口;异步调用是一种类似 ......

关于java中的URL类的使用一个问题


      我使用URL类来访问FTP服务器,当地址中没有中文时没有问题,但是
    当ftp中的文件夹有中文时,就无法访问了,我试过encoder和decoder类,都不行,有什么解决方法么?
            URL now = new URL("ftp://202.204.208.124/软件/");
......

在java中使用委托实现map/filter

在java中,假设你有一个user 对象的list,此user对象封装了用户的id, first name, last name and age. 然后你想调用一个web service(eg. UserService.deleteUsersByIds(List<Integer> userIds) 去删除数据库中指定的这些user。  听起来似乎不太困难,不是么? 你所需要只是将 List<User> 转化成List&l ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号