我在尝试创建链接列表时遇到错误:
线程“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));
}
}
}
答案 0 :(得分:16)
更改
new LinkedList<String>()
到
new java.util.LinkedList<String>()
问题的根源是LinkedList
引用包含代码class LinkedList
的类,而不是java.util.LinkedList
。
LinkedList
等不合格的类名(与java.util.LinkedList
之类的“完全限定名称”相比)通过查找特定顺序的匹配来解决。大致
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
改为您的 LinkedList
类java.util.LinkedList
。有两个简单的解决方法:
而不是写
列表list = new LinkedList();
写
List list = new java.util.LinkedList();
我强烈推荐第一个选项。由于您的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>()
以使其明确显示您想要的名称。