【问题标题】:"LinkedList is not generic" error Java“LinkedList 不是通用的”错误 Java
【发布时间】:2012-03-09 18:47:18
【问题描述】:

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

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

【问题讨论】:

  • 你想做什么?您正在创建的 LinkedList 类是 Collections 中的 Java 构建类库。更改您的班级名称。

标签: java compiler-errors linked-list


【解决方案1】:

改变

new LinkedList<String>()

new java.util.LinkedList<String>()

问题的根源在于LinkedList指的是包含代码class LinkedList的类,而不是java.util.LinkedList

LinkedList 这样的非限定类名(与java.util.LinkedList 这样的“完全限定名”相反)是通过按特定顺序查找匹配来解决的。大概

  1. 查找包含类。
  2. 查找非通配符导入。
  3. 在同一个包中寻找一个类。
  4. 查找通配符导入。

Java 语言规范的"6.5 Determining the Meaning of a Name" 部分有更详细的解释。

【讨论】:

  • 我敢打赌你在使用 Eclipse.... Eclipse 喜欢引用最奇怪的库。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:
    public class LinkedList {
    

    您的类未定义为泛型。我认为尽管您正在尝试使用 Java 的 LinkedList,所以您应该重命名您的类。

    【讨论】:

      【解决方案4】:

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

      1. 重命名您的班级
      2. 而不是写

        列表列表 = new LinkedList();

        列表列表 = new java.util.LinkedList();

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

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

      【讨论】:

        【解决方案5】:
        public class LinkedList {
        

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

        要么将类的名称更改为其他名称,要么执行new java.util.LinkedList&lt;String&gt;() 以明确您想要哪个。

        【讨论】:

          猜你喜欢
          • 2012-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-24
          相关资源
          最近更新 更多