《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
相关文档:
选择了java,也就是选择了一条光明而坎坷的道路。说他光明是因为应用的地方日益广泛,全球有很大的开发群体在为之忙碌,开源项目应有尽有;说他坎坷,是因为随着java的发展,现在有了太多的分支技术j2ee 13种技术,太多的框架(从底层到页面)如果要掌握还真不是件容易的事情,而且开源的东西永无止尽的在升级,在推陈 ......
众所周知,String是由字符组成的串,在程序中使用频率很高。Java中的String是一个类,而并非基本数据类型。 不过她却不是普通的类哦!!!
【镜头1】 String对象的创建
1、关于类对象的创建,很普通的一种方式就是利用构造器,String类也不例外:
& ......
ANT-build.xml文件详解
http://www.diybl.com/course/3_program/java/javajs/20081122/152210.html#
Ant的概念
可能有些读者并不理解什么是Ant以及入可使用它,但只要使用通过Linux系统得读者,应该知道make这个命令。当编
译Linux内核及一些软件的源程序时,经常要用这个命令。Make ......
一个java的class文件是一个二进制文件,其中前四个字节是magic位,第五到第六个字节对应于minor和major,下面是这个类文件版本与JDK的对应关系。class文件的minor和major可以通过ultraedit来查看,或自己编程等。
major minor Java platform version
45 3 1.0
45 3 1.1
46 0 ......