gpt4 book ai didi

Java 泛型——我缺少什么?

转载 作者:行者123 更新时间:2023-12-01 08:47:25 25 4
gpt4 key购买 nike

我想知道你是否可以帮助我更好地掌握泛型。我已经尽可能简化了这个问题。

我试图将存储在链接列表中的元素保存在名为 saveIt 的变量中。我知道 LinkedList 本身使用泛型,所以我希望我的变量能够采用列表中的任何数据类型。我相信 LinkedList 本身将该类型指定为 E,但是当我尝试将变量声明为“E saveIt”时,我得到“无法解析符号 E”。

public class Main {
public static void main(String[] args) {
// whatever goes here ...
}

void saveElement(LinkedList input) {
E saveIt = input.getFirst();
}
}

如果我创建 LinkedList,那么我可以将变量声明为“Integer saveIt”,但这不是我想要做的。

public class Main {
public static void main(String[] args) {
// whatever goes here ...
}

void saveElement(LinkedList<Integer> input) {
Integer saveIt = input.getFirst();
}
}

我考虑过声明“Object saveIt”,但我不确定这是否是正确的方法。数据类型 E 的概念显然存在于 Java 中,并且与 Object 不太一样(或者是吗?),那么为什么我不能访问它(或者如何访问它)?

public class Main {

public static void main(String[] args) {
// whatever goes here ...
}

void saveElement(LinkedList input) {
Object saveIt = input.getFirst();
}
}

所以,基本问题是,如果我想让我的方法处理列表中的任何数据类型,我该怎么做?

最佳答案

<E> void saveElement(LinkedList<E> input) {
E saveIt = input.getFirst();
}

您需要告诉 Java E 是您方法的类型参数——它就像传入的另一个东西! -- 并且 LinkedList 包含 E 类型的元素。

关于Java 泛型——我缺少什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42591431/

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