Я играл с интересной идеей (не знаю, включу ли я ее в любой код, но об этом интересно думать)
Допустим, у нас есть программа, которая требует большого количества классов, все определенного подкласса. И все эти классы должны быть одиночками. Теперь мы могли бы написать шаблон синглтона для каждого из этих классов, но, кажется, расточительно писать один и тот же код снова и снова, и у нас уже есть общий базовый класс. Было бы неплохо создать метод getSingleton для A, который при вызове из подкласса возвращает единичный объект класса B (приведен к классу A для простоты)
class A{
public A getSingleton(){
//Wizardry
}
}
class B extends A{
}
A blargh = B.getSingleton()
A gish = B.getSingleton()
if(A == B)
System.out.println("It works!")
Мне кажется, что способ сделать это - распознать и вызвать конструктор B по умолчанию (при условии, что нам не нужно ничего передавать.) Я немного знаком с черной магией отражения в Java, но я Я не уверен, что это можно сделать.
Кто-нибудь заинтересован в том, чтобы ломать голову над этим?