Встречается на собеседованиях • сегодня

Может ли Singleton бин иметь два экземпляра

Да, Singleton может иметь несколько экземпляров в определенных случаях:

  1. Многопоточность - без синхронизации несколько потоков могут создать свои экземпляры. Решение - использовать synchronized или статическую инициализацию:
java
public class Singleton {
    private static final Singleton INSTANCE = new Singleton();
    private Singleton() {}
    public static Singleton getInstance() {
        return INSTANCE;
    }
}
  1. Класслоадеры - разные класслоадеры загружают разные экземпляры класса.

  2. Сериализация - после десериализации создается новый объект. Решение - реализовать readResolve():

java
protected Object readResolve() {
    return getInstance();
}
  1. Рефлексия - можно обойти приватный конструктор. Решение - бросать исключение при попытке создать второй экземпляр.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы