我的技术博客经常被流氓网站恶意爬取转载。请移步原文:http://www.cnblogs.com/hamhog/p/3537576.html,享受整齐的排版、有效的链接、正确的代码缩进、更好的阅读体验。

第1条:用静态工厂代替构造函数

1. 形式

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

2. 优点:

  • 可以有名称
  • 不一定要创建新对象,可以返回已有的对象
  • 可以返回子类类型的对象(例:java.util.Collections)
  • 让参数化代码变短(例:new HashMap<String,List<String>>() 改为 HashMap.newInstance() )

3. 缺点:不能子类化,不被IDE工具识别。

4. 常用名称:valueOf/of ; getInstance(Singleton); newInstance ; getType(不同的类时用); newType

第2条:构造函数参数很多时用Builder模式

Hamster hamhog = new Hamster.Builder("hamhog").age(1).height(100).weight(50).build();

第3条:实现Singleton的最佳方法:枚举类型

public enum Hamster{
INSTANCE; public void haveLunch() { ... }
}

第4条:把所有属性和方法都是静态的类的构造函数设为private

第5条:避免不必要的new

1. 用"hamster",不要用new String("hamster") ; 有静态工厂方法就用静态工厂,不用构造函数 ; 优先用int、long等,不要随意用Integer、Long。

2. 只在初始化创建一次实例的写法:

class Hamster {
private static final Calendar lunchTime; static {
lunchTime = Calendar.getInstance();
lunchTime.set( ... )
}
}

第6条:对于自己管理内存的类,要注意及时把过期的对象引用 = null (但平常没必要这样做),防止内存泄漏

第7条:不要使用finalizer。非要用的话,要记住调用super.finalize。

[Effective Java读书笔记] 第二章 创建和销毁对象(1~7)的更多相关文章

  1. [Effective Java 读书笔记] 第二章 创建和销毁对象 第一条

    第二章  创建和销毁对象 第一条 使用静态工厂方法替代构造器,原因: 静态工厂方法可以有不同的名字,也就是说,构造器只能通过参数的不同来区分不同的目的,静态工厂在名字上就能表达不同的目的 静态工厂方法 ...

  2. [Effective Java 读书笔记] 第二章 创建和销毁对象 第二条

    第二条 遇到多个构造器参数时,可以考虑用构建器 当遇到有多个构造器参数时,常见的是用重叠构造器,即: public class TestClass{ public TestClass(int para ...

  3. [Effective Java 读书笔记] 第二章 创建和销毁对象 第六-七条

    第六条 消除过期引用 JAVA中依然会有 memory leak的,比如一个栈先增长再收缩,那么从栈中弹出的对象是不会被当做垃圾回收的,即时使用栈的程序不再引用这些对象.这是因为栈的内部维护着对这些对 ...

  4. [Effective Java 读书笔记] 第二章 创建和销毁对象 第五条

    第五条 避免创建不必要的对象 书中一开始举例: String s = new String("stringette"); // don't do this //应该使用下面,只会创 ...

  5. [Effective Java 读书笔记] 第二章 创建和销毁对象 第三 四条

    第三条 用私有构造器或者枚举类型强化singleton属性 singleton指只能被实例化一次的类,即将构造器设置为私有,使用公有静态成员来实例化,且只实例化一次对象 第四条 通过私有构造器强化不可 ...

  6. 《Effective Java》第1章 创建和销毁对象

    第1条 用静态工厂方法代替构造器 这个静态工厂,与设计模式中的静态工厂不同,这里的静态工厂方法,替换为“静态方法”比较好理解,主要就是建议编写静态方法来创建对象. 使用静态方法的好处: 1.静态方法有 ...

  7. 《Effective Java》第2章 创建和销毁对象

    第2条:遇到多个构造器参数时要考虑用构建器 与构造器相比,builder的微略优势在于,builder可以有多个可变(varargs)参数.构造器就像方法一样,只能有一个可变参数.因为builder利 ...

  8. [Effective Java]第二章 创建和销毁对象

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. 《Effective Java》读书笔记一(创建与销毁对象)

    No1 考虑用静态工厂方法代替构造器 静态工厂方法优势: 它们有名称,阅读性增强,如:BigInteger.probablePrime: 不必每次调用它们的时候都创建一个新对象: 它们可以返回原返回类 ...

随机推荐

  1. JAVA常用设计模式整理

    设计模式:一个程序员对设计模式的理解:“不懂”为什么要把很简单的东西搞得那么复杂.后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把 ...

  2. Xcode8适配iOS10.1真机测试

    将10.1测试包相关文件存放到指定位置,如图步骤提示: 解压文件:

  3. mybatis-generator-core自动生成do、mapping、dao 代码

    使用mybatis配置映射文件,有点麻烦,容易出错,可以使用jar工具自动生成代码,即高效又方便 一.下载两个jar,并放置在G:\tool\maven\generator目录下(自己定义) myba ...

  4. 有关字符串作为URL的 UTF8编码和解码的问题。

    当字符串要作为url访问的时候,我们对字符串中的中文非常头疼,这时候需就需要使用 UTF8来编码: //使用 stringByAddingPercentEscapesUsingEncoding 方法来 ...

  5. Nginx+Keepalived+Tomcat之动静分离的web集群

    #vi /etc/nginx/nginx.conf############################################user nginx nginx;worker_process ...

  6. 跟我学solr---吐槽一下,我的文章被抄袭啦

    今天闲来无事,就在在百度上搜了下面"跟我学solr",看看这几周来自己的努力成果怎么样,不搜还好,搜了就图学了.被原封不动地抄袭了!并且抄袭的文章还在百度排名第一,我自己的却被排到 ...

  7. const形参和实参

    当形参是const时,必须要注意关于顶层const的讨论.如前所述,顶层const的作用于对象本身: const int ci=42;  //不能改变ci,const是顶层的 int i=ci:   ...

  8. 面试题总结之Database

    SQL 1. 现有一张学生表,有只有一个列是名字,请选出其中的重名的学生的名字select name from student group by name having count(*) > 1 ...

  9. jQuery中要注意的一些函数

    has()方法 或 :has选择器 :是过滤子类含有的,并不是过滤当前选择器选择的元素或对象含有的

  10. Class File Editor: Source not found

    问题: 找不到需要的 *.java 文件就会报以下错误. 解决方案: 1. Window -> preferences -> Java -> Installed JREs 2. 选择 ...