gpt4 book ai didi

JAVA 为什么在分配这些变量时会出现类型错误 (T extends Comparable)

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

所以,假设我们有这两个类。

public class Main<T extends Comparable<T>> {
public List<T> toList(T t){
Node n = new Node();
n.value = t; //This assignment1 gives no issues.

List<T> list = new List<T>();
list.add(n.value); //This assignment2 gives a type error.
return list;
}
}

class Node <T extends Comparable<T>> {
T value = null;
}

那么,为什么赋值 1 没有出现类型错误,而赋值 2 却给出了以下错误:

List中的add(T)不能应用于(java.lang.Comparable)

当我这样做时它就会消失:

list.add((T)n.value);

但我想先了解原因,看看上面的解决方案是否正确。

编辑:现在,我应该指定使用这些类的代码是 Integer 对象。因此,我作为开发人员可以假设 T 类型是相同的。但我不确定代码是否有一些可以在转换过程中更改值的底层例程。

最佳答案

Node n = new Node();

应该是

Node<T> n = new Node<T>();

如果您曾经引用Node没有<something>在它之后,您告诉编译器忽略 Node 上的所有类型检查 。这将向您发出警告,正如它应该的那样。

关于JAVA 为什么在分配这些变量时会出现类型错误 (T extends Comparable<T>),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40442850/

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