Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 泛型类型的动态绑定_Java_Generics_Dynamic Binding - Fatal编程技术网

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> ...