以下是我试图支持的用例:
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);
}
}
有没有办法解决原始类型警告?