Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.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
如何最好地避免javabean使用通配符_Java_Generics_Dependency Injection_Wildcard - Fatal编程技术网

如何最好地避免javabean使用通配符

如何最好地避免javabean使用通配符,java,generics,dependency-injection,wildcard,Java,Generics,Dependency Injection,Wildcard,我的服务中使用了以下提供商: public interface DataProvider { public String safeDump(); } public interface FieldDataProvider<V> extends DataProvider { public <T> T getField(int field, Class<T> type); public void setRawField(int field,

我的服务中使用了以下提供商:

public interface DataProvider {
   public String safeDump();
}

public interface FieldDataProvider<V> extends DataProvider {

   public <T> T getField(int field, Class<T> type);

   public void setRawField(int field, V value);
}
公共接口数据提供程序{
公共字符串safeDump();
}
公共接口FieldDataProvider扩展了DataProvider{
公共T getField(int字段,类类型);
公共无效setRawField(整型字段,V值);
}
服务如下所示

public interface Service<T extends DataProvider>{

    public void handleData(T dataProvider);
}

公共接口服务{
公共无效handleData(T数据提供程序);
}
如何消除通配符来注入实现此服务的JavaBean

// to inject
public class ServiceBean implements Service<FieldDataProvider<?>>{

    public void handleData(FieldDataProvider<?> fieldDataProvider){
        String header = fieldDataProvider.getField(1, String.class)
    }
}    
//注入

公共类ServiceBean实现服务在
服务中
提供者是什么?
T
来自于
public T getField(int字段,类类型)?@JacobG。抢手货已编辑:将
提供程序
更改为
数据提供程序
。它是DataFieldProvider的基本接口。T是包含在方法中的一种类型(将返回类型定义为与第二个参数的类相等的类型),您是否也可以发布
DataProvider
接口?@JacobG。完成,但它不应该与整体结构密切相关。即使使用Java8,它对我来说也可以编译。可能尝试
构建->重建项目
文件->使缓存无效/重新启动