gpt4 book ai didi

java - 嵌套通配符泛型变量矫揉造作

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

给出以下 Java 代码:

public class Test {
public static class A<T> {
private T t;

public A(T t) {
this.t = t;
}

public T getT() {
return t;
}

public void setT(T t) {
this.t = t;
}
}

public static class B<T> {
private T t;

public B(T t) {
this.t = t;
}

public T getT() {
return t;
}

public void setT(T t) {
this.t = t;
}
}

public static class F<T> {
private T t;

public F(T t) {
this.t = t;
}

public A<B<T>> construct() {
return new A<>(new B<>(t));
}

public T getT() {
return t;
}

public void setT(T t) {
this.t = t;
}
}

public static void main(String[] args) {
F<?> f = new F<>(0);
// 1: KO
// A<B<?>> a = f.construct();
// 2: KO
// A<B<Object>> a = f.construct();
// 3: OK
// A<?> a = f.construct();
}
}

Test的main方法中类,将接收 f.construct() 结果的变量的正确类型是什么? ?这种类型应该类似于 A<B<...>>哪里...这就是我正在寻找的。

上面有 3 行带注释的代码代表我尝试解决这个问题。第一行和第二行无效。第三个是但我失去了 B输入信息,我必须转换 a.getT() .

最佳答案

A<? extends B<?>> a = f.construct();正如 Paul Boddington 所说,这是正确的语法。

关于java - 嵌套通配符泛型变量矫揉造作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36308580/

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