3 回答

TA貢獻1806條經驗 獲得超5個贊
如果您的方法具有相同的邏輯但參數類型不同,則可以創建此類方法的通用版本。在您的情況下,這種方法如下所示:
public static <T> List<T> remove(List<T> arrange) {
List<T> update = new ArrayList<>();
for (T arranging : arrange) {
//For-loop body here
}
return update;
}
然后您可以將此方法與任何T(Base或Subclass) 一起使用,該方法將處理列表中的元素作為參數傳遞并返回適當的類型:
List<Subclass> one = ...;
one = remove(one);
List<Base> two = ...;
two = remove(two);
希望這可以幫助。

TA貢獻1842條經驗 獲得超13個贊
您在這里需要的是泛型方法。
可以使用不同類型的參數調用的單個泛型方法聲明。您需要的通用函數如下所示:
public static < E > List<E> remove( List<E> arrange ) {...}
如果有多個泛型類型并且一個是另一個的子類(例如 BaseClass 和 SubClass),聲明將如下所示
public static < E, F > List<E> remove( List<F extends E> arrange ) {...}
更多信息,您可以參考https://www.tutorialspoint.com/java/java_generics.htm

TA貢獻1946條經驗 獲得超3個贊
我看到您所處的情況是,兩種方法幾乎可以做同樣的事情,但向調用者呈現的結果卻不同。如果返回類型的域較大,則使用泛型。 public static E remove(List<E> arrange)
如果返回類型有限,您可能會在 Base 和 SubClass 之間建立關系。并使用協方差來處理多種返回類型。
添加回答
舉報