Java 泛型类型的动态绑定
我需要绑定动态参数类型(列表),但我没有得到正确的。。。 以下是我的课程概述:Java 泛型类型的动态绑定,java,generics,dynamic-binding,Java,Generics,Dynamic Binding,我需要绑定动态参数类型(列表),但我没有得到正确的。。。 以下是我的课程概述: public abstract interface SettingsField<A> extends Window 公共抽象接口设置字段扩展窗口 然后我有一些实现SettingsField的类: public class StringSettingsField implements SettingsField<String> public class MapSettingsField<
public abstract interface SettingsField<A> extends Window
公共抽象接口设置字段扩展窗口
然后我有一些实现SettingsField的类:
public class StringSettingsField implements SettingsField<String>
public class MapSettingsField<K, V> implements SettingsField<Map<K, V>>
公共类StringSettingsField实现SettingsField
公共类MapSettingsField实现SettingsField
第一个很简单,但第二个有点棘手。。。所以我想制作一个返回设置文件的工厂。我想使用动态绑定为每个我想放进去的对象获得正确的设置。
因此,我重载了一个方法getField,如下所示。
对于字符串,它非常简单:
public SettingsField<String> getField(String x){
return new StringSettingsField();
}
公共设置字段getField(字符串x){
返回新的StringSettingsField();
}
但对于地图我有一些麻烦
public SettingsField<Map<? extends String, ?>> getField(Map<? extends String, ?> x){
return new MapSettingsField();
}
公共设置字段IIUYC,您需要
return new MapSettingsField<? extends String, ?>();
您也可以将K声明为有界的,例如
public <K extends Number, V extends List> ...
public。。。
或者随便什么。第一个示例给出编译时错误,因为类型MapSettingsField的参数数量不正确;它不能用参数参数化,我认为你的第二个解决方案似乎是最好的,因为我有静态类型安全!谢谢
public <K extends Number, V extends List> ...