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

《Effective java中文第2版》读书笔记1

第2条:遇到多个构造器参数时要考虑用构建器
某个类的属性较多,初始化的时候又有一些是必须初始化的,而且类型有形同,
比如new Contact("姓名","显示名","手机号","飞信号","所在地",年龄,性别);
前5个属性是String 类型,后2个是int类型,在填写构造方法的时候很容易填写错位,或者少填写,或者颠倒了属性,
如下方法可以减少这种错误发生的几率,
Contact contact = new Contact();
contact.setName("姓名");
contact.setDisplayName("显示名");
contact.setPhoneNumber("手机号");
contact.setFetionNumber("飞信号");
contact.setHometown("所在地");
contact.setAge(23);
contact.setGender(0);
这么写是通常的做法,看起来还不够清晰,我们在每个set方法里retrun一个Contact类型,比如
public Contact setName(String name)
{
this.name = name;
return this;
}
这样上面的构造Contact的代码就可以这么写了
Contact contact = new Contact() .setName("姓名")
.setDisplayName("显示名")
.setPhoneNumber("手机号")
.setFetionNumber("飞信号")
.setHometown("所在地")
.setAge(23)
.setGender(0);
这样写是不是更清爽了!属性不会再填写错误了!而且阅读代码的时候也一目了然,都给Contact初始化了那些属性,和属性的值是什么!
第3条:用私有构造器或者枚举类型强化Singleton属性
建议使用如下方法创建单例类
public final class Elvis
{
private static Elvis INSTANCE;
private Elvis(){};
synchronized public static Elvis getInstance()
{
if( INSTANCE == null )
{
INSTANCE = new Elvis();
}
return INSTANCE;
}
//执行其他操作
private Object readResolve()
{
return INSTANCE;
}
}
这种构建方法好处,组成类的成员声明很清楚地表明了这个类是个Singleton,并且也解决了INSTANCE的同步问题,
没有暴露共有的INSTANCE变量,这样更有力于隐藏类的内部实现,
另外,改做法也很容易就可以修改成非单例模式,加上的readResolve方法可以保证反序列化时也是同一个对象。

第4条:通过私有构造器强化不可实例化的能力
我们软件中常用的常量集(Constants),工具集(Tool,Utility)都应该是不可实例化的类,那么他们应该如下构建
public final class


相关文档:

String in Java

 众所周知,String是由字符组成的串,在程序中使用频率很高。Java中的String是一个类,而并非基本数据类型。 不过她却不是普通的类哦!!!
【镜头1】 String对象的创建
   1、关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:
        & ......

用Java开发代理服务器

 
代理服务器的应用非常广泛。比如,在企业网内部,它可以用来控制员工在工作时浏览的Internet内容,阻止员工访问某些类型
的内容或某些指定的网站。代理服务器实际上扮演着浏览器和Web服务器之间的中间人的角色,能够对浏览器请求进行各种各样的处理,能够过滤广告和
Cookie,能够预先提取Web页面,使得浏览器访问 ......

带着java学python

1. python是一种弱类型的脚本语言,在给变量赋值是无需指定变量的类型,例如:
x=1                        #(整型)-------范围在-2^31->2^31
x=2345L     &n ......

用java模拟浏览器程序

 程序源代码:
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane; ......

用java模拟写字板程序

源程序代码:
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号