effective
Mason技术
暂无
展开
-
对于所有对象都用的通用方法
八.覆盖equals时遵守通用约定自反性对于任何非空的引用值x,x.equals(x)必须返回true对称性对于任何非null的引用值想,x和y,y.equals(x)为真时,x.equals(y)也为真传递性对于任何非空的引用值x,y,z,x.equals(y)为true,y.equals(z)为true时,x.equals(z)必须为true一致性对于任何非空的原创 2017-07-09 19:52:30 · 186 阅读 · 0 评论 -
泛型
23.不要在新代码中使用原生态类型24.消除非受检警告25.列表优于数组数组是协变的public static void main(String[] args) { Object [] objects = new Long[1]; objects[0] = "1"; System.out.println(objects[0]); }只有在运行时才会报错数组是具体化的,原创 2017-07-14 22:21:26 · 145 阅读 · 0 评论 -
类和接口
13.使类和成员的可访问性最小化尽可能使每个类或者成员不被外界访问,顶层的类(非嵌套的)和接口,只有俩种可能的访问级别,包级私有的(package-private)和共有的(public)//公有的,不安全 public static final Thing[] VALUES = {}; //把公有数组变成私有的,增加一个公有的不可变数组 private static final T原创 2017-07-12 21:21:32 · 173 阅读 · 0 评论 -
序列化
74.谨慎的使用Serializable接口原创 2017-07-22 10:19:53 · 169 阅读 · 0 评论 -
创建和销毁对象
一.考虑用静态工厂方法代替构造器返回类的实例有俩种方法:1.提供共有的构造器2.提供共有的静态构造方法,只是返回类的实例的静态方法示例:将boolean基本类型转换成Boolean对象引用public static Boolean valueOf(boolean b){ return b?Boolean.TRUE:Boolean.FALSE; }优势:1.静态工厂方法有名称原创 2017-07-09 10:42:46 · 246 阅读 · 0 评论 -
并发
66.同步访问共享的可变程序读或写一个变量是原子的,除了long和double,读取一个非long或double类型的变量,可以保证返回的值是某个线程保存在该变量中的,即使多个线程在没有同步的情况下并发地修改这个变量也是如此关键词synchronized可以保证同一时刻,只有线程可以执行某一种方法,或者一个代码块。同步不仅可以阻止一个线程看到对象处于不一致的状态之中,还可以保证进入同步原创 2017-07-16 17:57:12 · 176 阅读 · 0 评论 -
异常
57.只针对异常的情况才使用异常异常是为了异常情况下使用而设计的,不要将他们用于普通的控制流,不要编写迫使他们这么做的api58.对可恢复的情况使用受检异常,对编程错误使用运行时异常三种异常:受检的异常,运行时异常和错误如果希望调用者能够适当的恢复,应该使用受检的异常。用运行时异常表明编程错误。错误往往被jvm保留用于表示资源不足,约束失败或者其他使程序无法继续执行的条件原创 2017-07-16 14:23:48 · 249 阅读 · 0 评论 -
方法
38.检查参数的有效性非公有的方法方法通常用断言检查它们的参数 private static void sort(long a[],int offset,int length){ assert a!=null; assert offset >=0 && offset <=a.length; assert length >=0 && length <=a.length-offse原创 2017-07-15 14:26:14 · 186 阅读 · 0 评论 -
枚举和注解
30.用enum代替int类型枚举类型指由一组固定的常量组成合法值的类型,没有枚举型前用的是声明一组常量。在安全和使用上没有帮助,将Apple传到orange也没有问题,还会用==比较,而且是编译器常量,如果改变,必须重新编译,不重新编译也没问题,行为就不确定了 public static final int APPLE_FUJI = 0; public static final int原创 2017-07-15 09:13:03 · 155 阅读 · 0 评论 -
通用程序设计
45.将局部变量的作用域最小化可以增强代码的可读性和可维护性,使局部变量的作用域最小化,最有利的方法就是在第一次使用它的地方声明循环中提供了特殊的机会来讲变量的作用域最小化,作用域被限定在正好需要的范围之内,在循环终止之后不再需要循环变量的内容,for循环优先于while循环for(int i=0,n=ex();i<n;i++){ }第二个变量n被用作保存第一个变量的极限值原创 2017-07-15 22:34:04 · 225 阅读 · 0 评论