Я не очень хорошо знаю Java, поэтому хотел бы спросить, реализована ли эта реализация. (Безопасность резьбы не имеет значения). Я хочу, чтобы для каждого класса T был выбран единственный уникальный синглтон.Один синглтон для каждого (общего типа)
public class MockDatabase<T> {
private MockDatabase() {}
private static Map<String, MockDatabase> singletonHolder = new HashMap<String, MockDatabase>();
public static <T> MockDatabase<T> getInstance(Class<T> clazz) throws InstantiationException, IllegalAccessException {
MockDatabase<T> singleton = (MockDatabase<T>)singletonHolder.get(clazz.getName());
if (singleton == null) {
singleton = new MockDatabase<T>();
singletonHolder.put(clazz.getName(), singleton);
}
return singleton;
}
}
Почему вы используете ключ 'clazz.getName()', а не 'clazz'? –
Вы не должны использовать необработанные типы ('Map' использует raw 'MockDatabase'). Кроме того, вы не должны использовать одну и ту же букву типа для параметра класса 'T' и общий параметр метода' ', поскольку это создает иллюзию того, что они одного типа. –
RealSkeptic
Почему вы не добавляете в кеш одиночный экземпляр, который вы создаете, когда у держателя нет? – davidxxx