我的類型化的接口下面的層級和一個實現:Java泛型與重載方法的問題
public interface Operation<T> {
T add(T object1, T object2);
}
public interface OperationNumeric<T extends Number> extends Operation<T> {
T add(T number1, T number2);
}
實施這一項目有一個重載方法Add():
public class OperationFloat implements OperationNumeric<Float> {
public Float add(Float number1, Float number2) {
return number1+number2;
}
public Float add(Float number1, Integer number2) {
return number1+number2;
}
}
現在我有一個使用OperationNumericInterface的方法:
public Number calculate(Number operand1, Number operand2, OperationNumeric operand) throws Exception {
return operand.add(operand1, operand2);
}
現在我試圖調用calculate()故意w第i兩種不同類型Float和整數這樣的:
try {
calculate(2.2f,2, new OperationFloat());
} catch (Exception e) {
System.out.println(e.getMessage());
}
有一次,我把它叫做,Java的不斷提及加(浮動,浮動)方法,並不能看到重載的方法加上(浮點,整數)。
IDEA提示「未調用(T,T)添加爲原料類型的成員......」
如何修改我的接口/類能夠使用重載的方法,因爲我想要的嗎?
這很有趣。我以爲Java會將'2'看作int並使用'Integer'簽名。在'Integer(2)'中包裝'2'時會發生什麼? –
'add(Float,Integer)'不是接口的一部分。如果您在'OperationNumeric'界面上操作,爲什麼Java應該調用此方法? – Turing85
[重載的方法選擇基於參數的實際類型]可能的重複(http://stackoverflow.com/questions/1572322/overloaded-method-selection-based-on-the-parameters-real-type) – Tom