我想知道您能否帮助我更好地掌握仿制药。
我已经尽可能简化了这个问题。

我正在尝试将存储在链接列表中的元素保存在名为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类型的元素。

10-07 12:28