Java Generics - 我缺少什么?

时间:2017-03-04 02:38:30

标签: java generics

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

我正在尝试将存储在链表中的元素保存在名为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();
    }
}

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

1 个答案:

答案 0 :(得分:1)

f1 = open('main_file', 'r')
for i,text in enumerate(f1):
    open(str(i + 1) + '.txt', 'w').write(text)

您需要告诉Java <E> void saveElement(LinkedList<E> input) { E saveIt = input.getFirst(); } 是您方法的类型参数 - 它就像传入的另一个东西! - E包含LinkedList类型的元素。