I have those two interfaces:
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);
}
Where Success and Failure are:
public static class Success<T> extends ApiResult {
    public T data;
}
public static class Failure extends ApiResult {
    public String message;
}
I get an error in GetCleverPointsCallback interface saying that 
both methods have same erasure but neither overrides the other.
What does that mean? Shouldn't the method from GetHappyCowsCallback override the method of its parent?
What I'm trying to achieve here is some kind of mapping between callbacks and their data without having to implement long mapping functions or even worse, duplicating the Success class like this:
public static abstract class Success<T> extends ApiResult {
    public T data;
}
public static class ListHappyCowSuccess extends Success<List<HappyCow>> {
}