Java 无法对非静态类型E进行静态引用

Java 无法对非静态类型E进行静态引用,java,generics,collections,Java,Generics,Collections,在编译时,我遇到如下错误 Gen.java第6行出错 import java.util.*; public class Gen { public static void main(String[] args) { String[] name = {"Selva", "KSA", "selva","ksa"}; List<E> s = new ArrayList<E>(); s.addAll(Arrays.asLi

在编译时,我遇到如下错误

Gen.java第6行出错

import java.util.*;

public class Gen {
    public static void main(String[] args) {
        String[] name = {"Selva", "KSA", "selva","ksa"};
        List<E> s = new ArrayList<E>(); 
        s.addAll(Arrays.asList(name));
        System.out.println(s);
    }
}
    List<E> s = new ArrayList<E>(); 
         ^
无法对非静态类型E进行静态引用

Gen.java第6行出错

import java.util.*;

public class Gen {
    public static void main(String[] args) {
        String[] name = {"Selva", "KSA", "selva","ksa"};
        List<E> s = new ArrayList<E>(); 
        s.addAll(Arrays.asList(name));
        System.out.println(s);
    }
}
    List<E> s = new ArrayList<E>(); 
         ^
无法对非静态类型E进行静态引用

类型E不存在

这里,s是一个字符串列表,所以使用:list s=new ArrayList

类型E不存在


这里,s是一个字符串列表,所以使用:list s=new ArrayList

您想要的是一个字符串列表,而不是一个未定义的、虚构类型E的列表:

  List<E> s = new ArrayList<E>(); 
                            ^
或者更简单,如果您使用的是Java 7:

List<String> s = new ArrayList<String>();

通过阅读了解泛型。

您想要的是字符串列表,而不是未定义的虚构类型E的列表:

  List<E> s = new ArrayList<E>(); 
                            ^
或者更简单,如果您使用的是Java 7:

List<String> s = new ArrayList<String>();

通过阅读了解泛型。

您可以让系统推断类型,但如果不是,则不能在静态上下文中使用动态类型

List<String> s = new ArrayList<>();

您可以让系统推断类型,但如果不是,则不能在静态上下文中使用动态类型

List<String> s = new ArrayList<>();

@Selva-在这段代码中,您可以看到从测试调用makeList传递了一个字符串数组,并期望返回一个列表。静态makeList方法使用T而不是String,但声明它返回与数组组件类型相同的列表。这与用法相匹配,因此通过编译。@Selva-在这段代码中,您可以看到从测试中调用makeList会通过一个字符串数组,并期望返回一个列表。静态makeList方法使用T而不是String,但声明它返回与数组组件类型相同的列表。这与用法相匹配,因此可以通过编译。