gpt4 book ai didi

java - 摆脱 Unchecked 覆盖 : return type requires unchecked conversion

转载 作者:行者123 更新时间:2023-12-01 19:50:22 30 4
gpt4 key购买 nike

与我的代码类似的示例代码。

public interface Builder<B, A> {
B build(A a);
}

public class ClientBuilder implements Builder<String, Integer> {
@Override
public String build(Integer i) {
return i.toString();
}
}

public abstract class Client<B> {
protected abstract <A> Builder<B, A> getBuilder();
}

public class ClientClient extends Client<String> {

@Override
protected Builder<String, Integer> getBuilder() {
return null;
}
}

在我的ClientClient类我收到一条警告,内容如下:

Unchecked overriding: return type requires unchecked conversion.Found 'Builder<java.lang.String,java.lang.Integer>', required 'Builder<java.lang.String,A>

我可以做些什么来消除这个错误吗?
我可以使用@SuppressWarnings("unchecked") ,但感觉不对。

在我的示例中 A始终是 Integer但在我的真实代码中A可以是两个对象之一。

我想我的界面中也可以有两种方法,如下所示:

public interface Builder<B> {
B build(Integer i);
B build(String s);
}

最佳答案

这没有正确覆盖该方法:

protected Builder<String, Integer> getBuilder() {
return null;
}

您缺少类型变量。

要么正确声明:

protected <A> Builder<String, A> getBuilder() {
return null;
}

或更改类声明以允许您提供第二个类型参数:

public abstract class Client<B, A> {
protected abstract Builder<B, A> getBuilder();
}

关于java - 摆脱 Unchecked 覆盖 : return type requires unchecked conversion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51496266/

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