public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();
}
private Singleton() {
}
public static Singleton getInstance() {
return SingletonHolder.INSTANCE;
}
public static void main(String args[]) {
Singleton s = new Singleton();
Singleton s2 = new Singleton();
}
}
Основываясь на «Эффективной Java», одноэлементный класс является чем-то вроде выше.Проблемы с классом Singleton в Java
Предположим, что у нас есть основная часть этого класса. Мы можем инициировать одноэлементный класс стольких раз, сколько мы хотим, как
Singleton s1=new Singleton();
Singleton s2=new Singleton();
Singleton s3=singleton.getInstance();
Singleton s4=singleton.getInstance();
Но одноплодной класс должен быть класс, который может быть инициироваться только один раз, но компилятор не выдаст ошибку, если мы объявляем несколько экземпляров выше , Зачем?
Читайте об инкапсуляции. Конечно, внутри класса вы можете делать все, что хотите. Однако за его пределами ... –
Кто бы ни вычитал меня, то pls объясняют, почему мой вопрос является уникальным вопросом, связанным с классом singleton в Java. – sevenxuguang