Имея этот интерфейс:Как реализовать ServiceLocator с дженериками?
public interface ServiceLocator {
<T> void setService(Class<T> klass, Factory<T> factory)
<T> void setConstant(Class<T> klass, T value)
<T> T getObject(Class<T> klass)
}
Как осуществить? Я имею в виду, как я объявляю данные структуры? Правильно ли это?
private Map<Class, Factory> services = new HashMap<>();
private Map<Class, Object> constants = new HashMap<>();
Таким образом, вы все равно можете добавить подстановочные знаки, чтобы избавиться от необработанных предупреждений. '' 'Map, Factory >>' ''. –
Но не нужно ли использовать дженерики для защиты типов? Я имею в виду мою константу 'константы', которая имеет тип объекта. Имея это, когда я делаю 'getObject' константы, тогда я вынужден сделать приведение:' (T) constants.get (klass); 'И это неправильно, не так ли? – anat0lius
Вы не можете получить этот уровень безопасности через систему типов. Но у вас уже есть (большинство) это в форме инкапсуляции. –