我有这两个接口:使用泛型从子接口覆盖接口方法的正确方法是什么?
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