zoukankan      html  css  js  c++  java
  • [Effective Java读书笔记] 第二章 创建和销毁对象(1~7)

    我的技术博客经常被流氓网站恶意爬取转载。请移步原文: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。

  • 相关阅读:
    Django项目的docker镜像制作
    可爱猫+python——定制化微信机器人
    django环境搭建遇到的问题
    python学习日记——利用python进行数据分析
    python学习日记——django基础
    bug字典整理
    Mysql字典收集
    MySQL开放第三方主机访问权限
    python学习日记——httprunner
    vux swiper 自定义高度
  • 原文地址:https://www.cnblogs.com/hamhog/p/3537576.html
Copyright © 2011-2022 走看看