gpt4 book ai didi

java - 为什么编译类型不匹配?使用接口(interface)时扩展

转载 作者:行者123 更新时间:2023-12-02 02:46:03 25 4
gpt4 key购买 nike

有人可以帮我解释一下为什么这是类型不匹配吗?

public interface ResponseContainer<T extends ResponsePayload<T>> {

public T getResponsePayload();

}

public interface ResponsePayload<T> {

public T getPayload();

}

protected abstract <T> Class<? extends ResponseContainer<? extends ResponsePayload<T>>> getResponseClazz(Class<? extends ResponsePayload<T>> responseClazz);

并调用它:

private void tryThis() {
ResponseContainer<AccountsResponse> contaner = getResponseClazz(AccountsResponse.class);
}

给出编译错误:

Type mismatch: cannot convert from Class<capture#22-of ? extends ResponseContainer<? extends ResponsePayload<AccountsResponse>>> to ResponseContainer<AccountsResponse>

这是因为我无法在语法上使用 吗?当某些东西正在实现而不是扩展它时扩展 T ?

最佳答案

您需要更改getResponseClazz的返回类型。您还应该更改通用定义以避免使用通配符。签名应该是

protected abstract <T extends ResponsePayload<T>> ResponseContainer<T> getResponseContainer(Class<T> responseClazz);

编辑感谢 Thilo,方法名称已更改

关于java - 为什么编译类型不匹配?使用接口(interface)时扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44567420/

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