Java泛型——我遗漏了什么?

Java泛型——我遗漏了什么?,java,generics,Java,Generics,我想知道你是否能帮我更好地掌握泛型。 我已尽量简化了这个问题 我试图将链表中存储的元素保存在一个名为saveIt的变量中。我知道LinkedList本身使用泛型,所以我希望我的变量采用列表中的任何数据类型。我相信LinkedList本身将该类型指定为E,但当我试图将变量声明为“E saveIt”时,我无法解析符号E public class Main { public static void main(String[] args) { // whatever goes h

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

我试图将链表中存储的元素保存在一个名为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();
    }
}
所以,基本的问题是,如果我想让我的方法处理列表中的任何数据类型,我该怎么做

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

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

真的吗?!哇!这很容易,我在问之前搜索了好一阵子,也许这应该是显而易见的。谢谢。这相当于void saveElementLinkedList Input,这取决于该值的其他处理方式,以及其他代码是否需要提到E。我假设这不是OP的完整代码。
<E> void saveElement(LinkedList<E> input) {
    E saveIt = input.getFirst();
}