gpt4 book ai didi

Java泛型通配符混淆

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:27 25 4
gpt4 key购买 nike

<分区>

我最近在学习 Java 泛型,并且只是想通过“Java 泛型常见问题解答”。

下面关于通配符参数化类型的问题 (#304) 让我有点困惑,希望得到你的帮助。

代码示例:

class Box<T> { 
private T t;
public Box(T t) { this.t = t; }
public void put(T t) { this.t = t;}
public T take() { return t; }
public boolean equalTo(Box<T> other) { return this.t.equals(other.t); }
public Box<T> copy() { return new Box<T>(t); }
}

class Test {
public static void main(String[] args) {
Box<?> box = new Box<String>("abc");
box.put("xyz"); // error
box.put(null); // ok

String s = box.take(); // error
Object o = box.take(); // ok

boolean equal = box.equalTo(box); // error {confused}
equal = box.equalTo(new Box<String>("abc")); // error {confused}

Box<?> box1 = box.copy(); // ok
Box<String> box2 = box.copy(); // error
}
}

无法弄清楚为什么调用下面两个方法会失败:

boolean equal = box.equalTo(box);
equal = box.equalTo(new Box<String>("abc"));

谢谢

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