我有兩個幾乎相同的方法,但我試圖避免代碼重複。通用方法參數 - Java
他們每個人都拿一個獨特的對象作爲參數,並從中找出最高值。
下面是一個例子:
public Integer getHighestIndexValue(List<ObjectA> list) {
int highestValue;
List<Integer> indexes = new ArrayList<Integer>();
for (ObjectA a: list) {
indexes.add(Integer.parseInt(a.getA()));
}
highestValue = Collections.max(indexes);
return highestValue;
}
或者:
public Integer getHighestIndexValue(List<ObjectB> list) {
int highestValue;
List<Integer> indexes = new ArrayList<Integer>();
for (ObjectB b: list) {
indexes.add(Integer.parseInt(b.getB()));
}
highestValue = Collections.max(indexes);
return highestValue;
}
使用這兩個泛型參數如何合併?
我嘗試創建一個BaseClass
,它包含這兩個類並將其擴展到方法簽名中。它仍然需要鑄造。
public <T extends BaseClass> Integer getHighestIndexValue(List<T> objectList) {
int highestValue;
List<Integer> indexes = new ArrayList<Integer>();
for (T objects: objectList) {
indexes.add(Integer.parseInt(objects.getAorB())); ------ this line needs casting
}
highestValue = Collections.max(indexes);
return highestValue;
}
我以前使用過泛型但尚未使用泛型參數。
有沒有解決這個辦法嗎?
我想謝謝你們所有人的回覆。我必須選擇這一個作爲最好的答案,因爲它像一個小小的努力工作的魅力.. :) –