В моем последнем интервью мне задали стандартный вопрос обо всех реализациях Singleton в java. И как они все плохи.
И мне сказали, что даже статическая инициализация плохая из-за вероятности непроверенного исключения в конструкторе:
public class Singleton {
private static Singleton instance = new Singleton();
public static Singleton getInstance() {
return instance;
}
private Singleton() {
throw new RuntimeException("Wow... Exception in Singleton constructor...");
}
}
И они также сказали мне, что исключение будет «ClassNotFoundException», поэтому было бы чрезвычайно сложно найти исключение. проблема в реальном приложении.
Я попытался получить это исключение:
public static void main(String[] args) {
new Thread(new Runnable(){
public void run() {
Singleton.getInstance();
}
}).start();
}
Но единственное, что я получил, это ExceptionInInitializerError ...
Я искал в Google это исключение, и везде, где я находил, все они говорили об одной и той же проблеме, о которой мне говорили в моем интервью. Ничего о "реализации" =)
Спасибо за внимание.