1 不要在整个类中使用@SuppressWarnings("unchecked"),尽量缩小使用范围,且需要有注释在其上说明为什么安全!
2 尽量使用委托代替继承,但是如果需要大量的简单委托(即需要大量实例的功能)时,还是用继承;在用委托时,尽量使用委托方法提供间接访问含有实例的方法,满足最小知识原则,如果不得不使用委托,这种情况下就让它直接得到委托对象,从而调用
3 关于synchronized
synchronized就是记住你锁定是什么?是某个对象还是什么,以后如果有人用到你加锁的目标的synchronized,就不行了,因为已经被加锁了,不能再锁。关键有两点:第一点是注意锁定的什么?,如果不是你锁的,就没有约束力; 第二点是约束力仅仅在调用synchronized范围;
同步方法锁定的相对于this,锁定的是当前对象
而你如果同步块,那么就看具体锁定是什么?
Integer i = new Integer(10); 不可以锁
//Integer i=10; 可以锁,因为每次都是同一个对象。
2个同步方法,那么同一个对象,当调用其中一个同步的时候,另外一个同步可以被调用吗?不可以。
4 层次组织常量的方法: 接口组织枚举,静态内部类
5 常量应定义在类中,并且设置构造器为私有从而让其不可实例化;常量接口是种误用,以后如果不需要某个常量还存在实现类里面,所以接口要求有方法最好,光有常量不合适。
6 标签应该仅用于多层嵌套,因为单层循环没有任何意义,跳出或者CONTINUE到外层循环才有意义
7 定义定的时候尽量不要和常用已知的类,例如JAVA.LANG同名,那样容易冲突也不好用。
8 使用private构造器,确保工具类不能被实例化或者继承
9 关闭流时,关闭最后一个外层流即可,其他自动关闭。
10 TimeUnit.MILLISECONDS.sleep(100) 新的sleep方式
11 添加新方法时,先添加接口中的方法,这样就不会老是忘记加了...
12 当在eclipse中new一个对象,没有提示时,因为这个对象的构造器不可见。
13 异常只能用于错误处理,不应该用来控制程序流程。
14 F2修复(或者Ctrl+1),F3进入 F4 显示Outline和继承结构(alt+t)
15 尽量指定类的final修饰符
■带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String。为String类指定final防止了人们覆盖length()方法。
另外,如果指定一个类为final,则该类所有的方法都是final。Java编译器会寻找机会内联(inline)所有的final方法(这和具体的编译器实现有关)。此举能够使性能平均提高50%。