gpt4 book ai didi

java泛型绑定(bind)不匹配: The type is not a valid substitute for the bounded parameter

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

    public class XYZ {
public static void main(String[] args) {

C<A> c = new D<A>();

我收到错误:::绑定(bind)不匹配:类型 A 不是类型 C 的有界参数 > 的有效替代。我究竟做错了什么? }

    }

class D<T extends B<T>> implements C<T>{
@Override
public void ok(T b) {
System.out.println(b.getId());
}
}

interface C<T extends B<T>>{
void ok(T b);
}

class A extends B<String>{
}

class B<T>{
private T id;

public T getId() {
return id;
}

public void setId(T id) {
this.id = id;
}

}

最佳答案

您必须使用通配符B<?> 。问题是C<T extends B<T>> 。您为 C 和 B 指定类型 T 。但你声明C<A> 。所以在你的情况下B还获得类型 A ,但你的代码显示 class A extends B<String> ,其中B必须是String 。同样的问题在D 。希望我的答案是明确的。

以下代码应该适合您:

public static void main(String[] args) {

C<A> t = new D<A>();
}

static class D<T extends B<?>> implements C<T> {
@Override
public void ok(T b) {
System.out.println(b.getId());
}
}

interface C<T extends B<?>> {
void ok(T b);
}

static class A extends B<String> {
}

static class B<T> {
private T id;

public T getId() {
return id;
}

public void setId(T id) {
this.id = id;
}

}

关于java泛型绑定(bind)不匹配: The type is not a valid substitute for the bounded parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35718151/

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