мне нужно динамически связать параметрический тип (список), но я не понимаю его правильно ... вот обзор моих классов:
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.Я хочу использовать динамическое связывание, чтобы получить правильное окно настроек для каждого объекта, который я хочу поместить туда.поэтому я перегружаю метод getField следующим.для String это довольно просто:
public SettingsField<String> getField(String x){
return new StringSettingsField();
}
, но для карты у меня есть некоторые проблемы ...
public SettingsField<Map<? extends String, ?>> getField(Map<? extends String, ?> x){
return new MapSettingsField();
}
то, что ключ всегда является строкой, является экзаменом (может быть? также)но теперь компилятор дает мне предупреждение, что
MapSettingsField является необработанным типом.Ссылки на универсальный тип MapSettingsField должны быть параметризованы
но как я могу это сделать здесь?проблема только в том, что использование Map недопустимо, из-за некоторой проблемы с f-generic в java (List не является неявным подтипом List, даже если B является подтипом A)заранее спасибо!