“LinkedList不是通用的”错误Java

时间:2012-03-09 18:47:19

标签: java compiler-errors linked-list

我在尝试创建链接列表时遇到错误:

  

线程“main”中的异常java.lang.Error:未解决的编译问题:   
LinkedList类型不是通用的;它不能用参数< String>参数化   
在LinkedList.main(LinkedList.java:7)

任何人都知道如何解决此错误?这是程序:

import java.util.*;

public class LinkedList {
    public static void main(String[] args) {
        List<String> list = new LinkedList<String>();
        Scanner input = new Scanner(System.in);

        System.out.print("How many elements do you want to add: ");
        int num = input.nextInt();

        for(int i = 0; i < num; i++) {
            System.out.print("Add Element: ");
            String element = input.next();
            list.add(element);
        }
        System.out.println();

        System.out.println("LinkedList elements are: ");
        for(int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

5 个答案:

答案 0 :(得分:16)

更改

new LinkedList<String>()

new java.util.LinkedList<String>()

问题的根源是LinkedList引用包含代码class LinkedList的类,而不是java.util.LinkedList

LinkedList等不合格的类名(与java.util.LinkedList之类的“完全限定名称”相比)通过查找特定顺序的匹配来解决。大致

  1. 寻找一个包含类。
  2. 查找非通配符导入。
  3. 在同一个包中寻找一个类。
  4. 寻找通配符导入。
  5. Java语言规范的"6.5 Determining the Meaning of a Name"部分更详细地解释了。

答案 1 :(得分:4)

您的类也称为LinkedList,因此它会发生冲突。如果你想修复它,请改用此行。更好的是,你的班级有一个不同的名字......

List<String> list = new java.util.LinkedList<String>();

答案 2 :(得分:3)

public class LinkedList {

您的课程未定义为通用课程。我想尽管您正在尝试使用Java的LinkedList,但您应该重命名您的类。

答案 3 :(得分:2)

您将main方法放在名为LinkedList的类中,该类优先于编译器名称解析算法中的内置LinkedList类。换句话说,因为您的main方法位于名为LinkedList的类中,所以编译器将名称LinkedList改为您的 LinkedListjava.util.LinkedList。有两个简单的解决方法:

  1. 重命名您的课程
  2. 而不是写

    列表list = new LinkedList();

    List list = new java.util.LinkedList();

  3. 我强烈推荐第一个选项。由于您的LinkedList类实际上并不代表链表数据结构,因此您的类上的名称会让读取代码的人感到困惑。也许打电话给你的班级LinkedListTest,即你的档案可能是

    import java.util.*;
    
    public class LinkedListTest {
        // Implementation of main and helper methods
    }
    

答案 4 :(得分:1)

public class LinkedList {

您为自己的班级LinkedList命名,因此它优先于java.util.LinkedList

将类的名称更改为其他名称或执行new java.util.LinkedList<String>()以使其明确显示您想要的名称。