gpt4 book ai didi

Java泛型方法覆盖

转载 作者:行者123 更新时间:2023-12-04 06:53:39 24 4
gpt4 key购买 nike

我有界面:

public interface CartService extends RemoteService{
<T extends ActionResponse> T execute(Action<T> action);
}

我希望在实现中覆盖“执行”方法:
public class XX implements CartService {

@Override
public <GetCartResponse> GetCartResponse execute(GetCart action) {
// TODO Auto-generated method stub
return null;
}
}

但收到编译器错误:
XX 类型的方法 execute(GetCart) 必须覆盖或实现父类(super class)型方法

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;
}

}

我怎样才能覆盖这个方法?

最佳答案

问题是接口(interface)的定义与您的 impl 的erausre 应该是什么样子。在您的示例中,您有:

<T extends ActionResponse> T execute(Action<T> action);
public <GetCartResponse> GetCartResponse execute(GetCart action);

但根据接口(interface)定义,实现方法应为:
public GetCartResponse execute(Action<GetCartResponse> action);

所以我认为您要么需要更改界面的签名,要么添加另一个类型参数,例如:
public interface CartService extends RemoteService{
<T extends ActionResponse, U extends Action> T execute(U action);
}

或者可能类似于:
public interface CartService extends RemoteService{
<T extends ActionItem> ActionResponse<T> execute(Action<T> action);
}

关于Java泛型方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2773511/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com