zoukankan      html  css  js  c++  java
  • 笔记:Effective Java

    1、静态Factory替代Constructor函数

    优势:有名称;不必每次都创建一个新对象,可实现享元;可返回子类型对象;参数化构造时候,代码简洁。


    2、遇到多个Constructor 参数时候考虑使用Builder 模式


    3、避免创建不必要的对象,尽量重用

    如 String s = "aaaa" 远好于 String s= new String("aaaa");

    Long s = Long.value(1)   远好于 Long  s = new Long(1);


    4、清除过期对象

    典型地,清除Collection 中过期的元素,防止内存泄露


    5、覆盖equals注意

    总要覆盖hashCode;注意方法是 equals(Object obj) 而不是 equals(MyObject  obj)


    6、类和成员的可访问性最小化

    7、复合优于继承


    8、列表List 优于数组

    现在不支持泛型数组,会抛ClassCastException


    9、优先考虑泛型方法

    public  <T>   T myMethod(List<T>  tList)  {}


    10、必要时候进行保护性拷贝

    比如返回一个数组,为了避免被,可返回其 clone对象。



    11、需要精确的答案,不要使用float和double,而使用BigDecimal


    13、基本类型优于装箱类型
    比如 int 优于 Integer, boolean 优于 Boolean

    14、同步访问共享的可变数据
    i++,++操作不是线程安全的,可使用AtomicLong
    使用Volitale关键字保证可见性

    15、Executor 和 task 优于线程

    16、并发工具优于wait、notify

    17、慎用初始化
    单例模式初始化:
    public class Singleton{
            private Singleton() {}
            private static Singleton instance ;
            public  static  Singleton getInstance() { return  Holder.singleton  }
            private static class Holder 
            {
                  static  Singleton singleton = new Singleton();
            }
    }


    其余没怎么用到





  • 相关阅读:
    Android Studio 之 no render target selected
    将android模拟器上的db文件拷贝到电脑上
    两种思路从0打印到100
    RN picker使用
    android打印日志封装
    android仿支付宝输入车牌号
    OC仿支付宝输入UITextField输入车牌号
    RN全局的变量,方法,全局类,全局类方法
    RN九宫格
    RN正、反向传值,组件输出
  • 原文地址:https://www.cnblogs.com/leeeee/p/7276197.html
Copyright © 2011-2022 走看看