如何使泛型类型ArrayList静态?

时间:2016-09-08 08:49:06

标签: java generics arraylist static generic-type-argument

我有以下ArrayList:

public ArrayList<E> list = new ArrayList<>();

我想与其他类共享它的值,但当我将它定义为静态时,它会给我以下错误:

'Packagename.Class.this' Cannot be referenced from a static context.

那么是否有人知道如何使其静态或如何以其他任何方式与其他类共享其价值?

谢谢。

1 个答案:

答案 0 :(得分:1)

您无法使用&lt; E&gt;在静态属性定义上,因为&lt; E&gt;将针对每个类的实例进行不同的定义。例如,考虑以下代码段:

public class A<E> {
    private List<E> list = new ArrayList<>();

    public static void main(String[] args) {
        A<String> a1 = new A<>();
        A<Integer> a2 = new A<>();
    }
}

...正如您所看到的,&#39;列表&#39;需要为A的每个实例采用不同的泛型类型。静态List没有意义,因为它需要同时具有两种类型。

它必须绑定到特定实例这一事实应该会让您重新考虑在与其他类共享值时要尝试做的事情。