有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何将ArrayList分配给列表?

我有以下代码:

import java.util.*;

public class hello {
  public static void main( String[] args ) {
    Collection c = new ArrayList< Integer >();
    List l = new ArrayList< String >();
  }
}

并在“列表l”行中获取错误:

hello.java:6: error: incompatible types
    List l = new ArrayList< String >();
             ^
  required: List
  found:    ArrayList<String>
1 error

我正在使用OpenJDK 1.7:

java version "1.7.0_25"
OpenJDK Runtime Environment (IcedTea 2.3.12) (7u25-2.3.12-4ubuntu3)
OpenJDK 64-Bit Server VM (build 23.7-b01, mixed mode)

编辑:当我使用List<String>时,会发生以下情况:

hello.java:6: error: type List does not take parameters
    List< String > l = new ArrayList< String >();
        ^
1 error

共 (2) 个答案

  1. # 1 楼答案

    使用相同的导入语句,运行下面的代码,查看要导入的列表类

    List l;
    System.out.println(l.getClass().getName());
    

    此外,在同一个源文件或另一个java源文件中,可能有定义为内联的列表类,如下所示:在这种情况下,将使用该类:

    package test;
    
    import java.util.*;  //Implicitly imports java.util.list
    
    class Test {
        List list;       //Not java.util.List type but test.List type
        System.out.println(List.class.getName());  //prints test.List
    }
    
    class List {}  //Class defined as inline in the same source file
    
  2. # 2 楼答案

    我已经用我的OpenJDK检查了这一行:

    List l = new ArrayList<String>();
    

    它编译时完全没有抱怨

    根据您的第二个错误(“List不接受类型参数”),我猜您在同一个包中定义了一个List类型,并且它优先于JDK类型,或者您使用了更多未显示的导入语句,例如

    import java.awt.*;
    

    其中该包包含一个List小部件