мне нужно, чтобы связать всю динамику parametic типа (List), но я не получаю это правильно ... вот обзор моих классов:динамическое связывание с общим типом
public abstract interface SettingsField<A> extends Window
то у меня есть некоторые классы, реализует SettingsField:
public class StringSettingsField implements SettingsField<String>
public class MapSettingsField<K, V> implements SettingsField<Map<K, V>>
первым реально просто, но, например, второй немного сложнее ... так что я хочу сделать завод, который возвращает SettingsFileds. Я хочу использовать динамическое связывание, чтобы получить правильный параметр SettingsWindow для каждого объекта, который я хочу разместить там. поэтому я перегружаю метод getField следующим образом. для строки его довольно легко:
public SettingsField<String> getField(String x){
return new StringSettingsField();
}
но карты у меня есть некоторые проблемы ...
public SettingsField<Map<? extends String, ?>> getField(Map<? extends String, ?> x){
return new MapSettingsField();
}
, что ключ всегда строка является exampe , но теперь (может быть также?) компилятор дает мне аргумент, что
MapSettingsField - это необработанный тип. Ссылки на общий тип MapSettingsField следует параметризовать
но как я могу это сделать здесь? проблема в том, что использование карты неверно, из-за некоторой проблемы с f-generic в java (List не является неявным подтипом List, даже если B является подтипом A)
любые подсказки? заранее спасибо!
Первый пример дает вам ошибку времени компиляции из-за неправильного количества аргументов для типа MapSettingsField; его нельзя параметризовать аргументами
Я думаю, что ваши второй решения кажутся лучшими, потому что у меня есть статический тип safty! благодаря! – reox