Почему отражение не может сломать одноэлементный шаблон, разбив частный конструктор на код ниже. На InstanctTwo должен появиться новый экземпляр, но его нет.Java Reflection and Singleton
Constructor[] constructors = EagerInitializedSingleton.class.getDeclaredConstructors();
for (Constructor constructor : constructors) {
//Below code will destroy the singleton pattern
constructor.setAccessible(true);
instanceTwo = (EagerInitializedSingleton) constructor.newInstance();
break;
}
Конечно, может. Почему вы думаете, что это невозможно? –
Может ли это, если 'EagerInitializedSingleton' является' enum'? (Это звучит не так, но на самом деле у нас нет кода). Я спрашиваю, из-за чего Джош Блох говорит о «железной гарантии от множественного экземпляра, даже перед лицом сложных атак с сериализацией или отражением». –
Я получаю исключение с помощью исключающего указателя при печати хэша, например, дважды. EagerInitializedSingleton - это singleTon, как следует из названия. Это не перечисление. –