错误:类型List不带有参数;java中import导入问题

来源:互联网 发布:普查数据库 英语 编辑:程序博客网 时间:2024/05/19 23:00

今天在编译运行编程思想上面的一个例子的时候,出现错误:类型List不带有参数如下所示:


import java.util.*;public class AddingGroups {  public static void main(String[] args) {    Collection<Integer> collection =      new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));    Integer[] moreInts = { 6, 7, 8, 9, 10 };    collection.addAll(Arrays.asList(moreInts));    Collections.addAll(collection, 11, 12, 13, 14, 15);    Collections.addAll(collection, moreInts);   List<Integer> list=Arrays.asList (16, 17, 18, 19, 20);//出现错误:类型List不带有参数    list.set(1, 99);  }}
但是当我们显式的单点导入我们需要的类时,就不会报错。
import java.util.*;import java.util.List;public class AddingGroups {  public static void main(String[] args) {    Collection<Integer> collection =      new ArrayList<Integer>(Arrays.asList(1, 2, 3, 4, 5));    Integer[] moreInts = { 6, 7, 8, 9, 10 };    collection.addAll(Arrays.asList(moreInts));    Collections.addAll(collection, 11, 12, 13, 14, 15);    Collections.addAll(collection, moreInts);   List<Integer> list=Arrays.asList (16, 17, 18, 19, 20);//不会报错    list.set(1, 99);  }} 
同样的问题在下面的例子中也会出现;


import java.util.*;class ArrayList {    public static void main(String args[]) {        ArrayList<String> arrayList = new ArrayList<String>();//类型ArrayList不带有参数        arrayList.add("a");        arrayList.add("b");        arrayList.add("c");        for (int i = 0; i < arrayList.size(); i++) {            System.out.println(arrayList.get(i));        }    }}
作如下改动后就不会报错;

import java.util.*;class ArrayList {    public static void main(String args[]) {//        ArrayList<String> arrayList = new ArrayList<String>();        java.util.ArrayList<String>  arrayList = new  java.util.ArrayList<String>();//不会报错        arrayList.add("a");        arrayList.add("b");        arrayList.add("c");        for (int i = 0; i < arrayList.size(); i++) {            System.out.println(arrayList.get(i));        }    }}

上面两个例子出现错误,第一个可能是因为我们使用包导入,在不同的包路径下面会有相同的类名,导致冲突;所以一般情况下我们要多使用单点导入,这样可以在提高编译速度的同时,避免类名冲突;第二个例子是因为我们将主类的名字命名为ArrayList,这与java.util包中的ArrayList相冲突;会优先使用自定义的这个ArrayList。只要我们显示的声明类的归属就可以避免这个问题。

0 0