在Java中,getInstance()方法通常用于獲取類的單例實例。為了優化這個方法,你可以考慮以下幾點:
public enum Singleton {
INSTANCE;
public void someMethod() {
// ...
}
}
使用示例:
Singleton singleton = Singleton.INSTANCE;
singleton.someMethod();
getInstance()方法時,靜態內部類才會被加載并實例化。public class Singleton {
private Singleton() {
// ...
}
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
}
使用示例:
Singleton singleton = Singleton.getInstance();
singleton.someMethod();
instance變量的可見性。public class Singleton {
private static volatile Singleton instance;
private Singleton() {
// ...
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
}
使用示例:
Singleton singleton = Singleton.getInstance();
singleton.someMethod();
總之,選擇哪種方法取決于你的需求和場景。枚舉和靜態內部類方法更簡潔,而雙重檢查鎖定方法在多線程環境下更安全。