我需要动态绑定一个参数类型(列表),但我不明白......这是我的类的概述:
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。对于 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 无效,因为 java 中的 f-generic 存在一些问题(即使 B 是 A 的子类型,List 也不是 List 的隐式子类型)
任何提示?提前致谢!