мне нужно связать динамически параметрический тип (список), но я не понимаю... вот обзор моих классов:
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 должны быть параметризованы.
но как я могу сделать это здесь? проблема в том, что просто используйте карту недействительно из-за некоторой проблемы с f-generic в java (список не является неявным подтипом списка, даже если B является подтипом A)
любые намеки? заранее спасибо!