1.重写equals方法原则。
①、自反性:对于任何非空引用x,x.equals(x)应该返回true。
②、对称性:对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true。
③、传递性:对于任何引用x、y和z,如果x.equals(y)返回true,y.equals(z)返回true,那么x.equals(z)也应该返回true。
④、一致性:如果x和y引用的对象没有发生变化,那么反复调用x.equals(y)应该返回同样的结果。
⑤、非空性:对于任意非空引用x,x.equals(null)应该返回false。
2.用 Java 写一个线程安全的单例模式(Singleton)。
①枚举法
public enum Singleton {
INSTANCE;
public void whateverMethod() {
}
}
②双重校验锁
public class SingleTon {
private static volatile SingleTon instance;
private static SingleTon getInstance () {
if (instance == null) {
synchronized (SingleTon.class) {
if (instance == null) {
instance = new SingleTon();
}
}
}
return instance;
}
}