I have interface:
public interface CartService extends RemoteService{
<T extends ActionResponse> T execute(Action<T> action);
}
I wish override ‘execute’ method in implementation:
public class XX implements CartService {
@Override
public <GetCartResponse> GetCartResponse execute(GetCart action) {
// TODO Auto-generated method stub
return null;
}
}
But receive compiler error:
The method execute(GetCart) of type XX must override or implement a supertype method
GetCart & GetCartResponse:
public class GetCart implements Action<GetCartResponse>{
}
public class GetCartResponse implements ActionResponse {
private final ArrayList<CartItemRow> items;
public GetCartResponse(ArrayList<CartItemRow> items) {
this.items = items;
}
public ArrayList<CartItemRow> getItems() {
return items;
}
}
How can I override this method ?
The problem is the definition of the interface vs what the erausre should look like for your impl. In your example you have:
but according to the interface definition the implementation method should read:
So I think you either need to change the signature of your interface or add another type parameter such as:
or possibly something along the lines of: