有两个参数的多个调度?

时间:2015-01-22 16:37:03

标签: java oop generics polymorphism dispatch

以下是我试图支持的用例:

IDataStore 是一个指定如何将数据放入数据存储的接口。它有两个子接口, IDataStoreA IDataStoreB ,它们指定了从数据存储中获取数据的不同方法。

ICalculator 指定了对数据执行计算的方法。

我想创建一个 ICalculationPerformer 类。这将采用IDataStore和ICalculator的特定实现,并指定如何从数据存储中获取数据并将其传递给计算器的逻辑。

public interface ICalculationPerformer<D extends IDataStore, C extends ICalculator>{

void performCalculation(D dataStore_,C calculator_); }

实现可能如下所示:

public class ConcreteCalculationPerformer extends ICalculationPerformer<DataStoreA, CalculatorA>{
  void performCalculation(DataStoreA dataStore_, CalculatorA calculator_);
}

我的主类有一个ICalculationPerformer但在编译时不知道它的泛型是什么;我得到一个原始类型的警告。假设它从工厂获得ICalculationPerformer

class driver{
  IDataStore dataStore; //constructor injected via spring
  ICalculator calculator; //constructor injected via spring

public static void main(){
//raw type warning!
  ICalculationPerformer p = 
calculationPerformerFactory.getCalculationPerformer(dataStore,Calculator);

}
}

有没有办法解决原始类型警告?

0 个答案:

没有答案