这是一个线程安全的单例模式吗?为什么public class Test {
public static final Test test = new Test(); private Test(){
}
public static Test getTest() {
return test;
}
}我看spring中就有这样的用法,如下@SuppressWarnings("serial")
final class TruePointcut implements Pointcut, Serializable { public static final TruePointcut INSTANCE = new TruePointcut(); /**
* Enforce Singleton pattern.
*/
private TruePointcut() {
} @Override
public ClassFilter getClassFilter() {
return ClassFilter.TRUE;
} @Override
public MethodMatcher getMethodMatcher() {
return MethodMatcher.TRUE;
} /**
* Required to support serialization. Replaces with canonical
* instance on deserialization, protecting Singleton pattern.
* Alternative to overriding {@code equals()}.
*/
private Object readResolve() {
return INSTANCE;
} @Override
public String toString() {
return "Pointcut.TRUE";
}}
public static final Test test = new Test(); private Test(){
}
public static Test getTest() {
return test;
}
}我看spring中就有这样的用法,如下@SuppressWarnings("serial")
final class TruePointcut implements Pointcut, Serializable { public static final TruePointcut INSTANCE = new TruePointcut(); /**
* Enforce Singleton pattern.
*/
private TruePointcut() {
} @Override
public ClassFilter getClassFilter() {
return ClassFilter.TRUE;
} @Override
public MethodMatcher getMethodMatcher() {
return MethodMatcher.TRUE;
} /**
* Required to support serialization. Replaces with canonical
* instance on deserialization, protecting Singleton pattern.
* Alternative to overriding {@code equals()}.
*/
private Object readResolve() {
return INSTANCE;
} @Override
public String toString() {
return "Pointcut.TRUE";
}}
参考
https://www.java123.vip/qa/286/%E6%B1%82%E8%A7%A3java%E7%B1%BB%E7%9A%84%E5%8A%A0%E8%BD%BD%E9%A1%BA%E5%BA%8F同问:为什么不安全?