我有這兩個接口:使用泛型從子接口覆蓋接口方法的正確方法是什麼?
public interface ApiResultCallback {
void onSuccess(RestApi.Success<?> successResult);
void onFailure(RestApi.Failure failureResult);
}
public interface GetHappyCowsCallback extends ApiResultCallback {
void onSuccess(RestApi.Success<List<HappyCow>> successResult);
}
凡Success
和Failure
是:
public static class Success<T> extends ApiResult {
public T data;
}
public static class Failure extends ApiResult {
public String message;
}
我得到GetCleverPointsCallback
接口一個錯誤,指出
兩種方法都有相同的擦除但也覆蓋另一個。
這是什麼意思? GetHappyCowsCallback
的方法不應該重寫其父項的方法嗎?
我試圖在這裏實現某種回調和他們的數據之間的映射,而無需執行長映射函數或者更糟的是,複製成功類是這樣的:
public static abstract class Success<T> extends ApiResult {
public T data;
}
public static class ListHappyCowSuccess extends Success<List<HappyCow>> {
}
從[這裏](http://stackoverflow.com/questions/17116845/implementing-comparable-compareto-name-clash-have-the-same-erasure-yet-neith ):「這些方法具有相同的擦除,這意味着一旦編譯器去除了泛型類型信息,就不再有在運行時區分它們的方法。」 – Frecklefoot
@Frecklefoot好吧,這是有道理的,但這部分是什麼:「但是都沒有壓倒另一個」?第二種方法不應該覆蓋第一種方法嗎? – TheCrafter
我不確定,因爲Java現在不是我的專長,但[Google搜索](https://www.google.com/search?q=java+error+both+methods+have+same+擦除+但+不+ +覆蓋+ +其他。&ie = utf-8&oe = utf-8)的錯誤產生了幾十個好結果。我希望有所幫助。 – Frecklefoot