LinkedList<String> stringList = new LinkedList<String>();这句话有什么问题?

13

当我尝试:

LinkedList<String> stringList = new LinkedList<String>();

我得到了以下编译错误:

type LinkedList does not take parameters

我错过了什么? 你不能这样做吗?

6个回答

27
检查确保您没有编译的名为LinkedList的类存在于同一目录中。(特别是因为“linked list”是一个常见术语,初学者经常尝试实现它。) 如果您使用类似于import java.util.*;这样的方式导入类,则此事很重要,因为*按需导入,因此如果包中已有同名类,则使用该类而不会导入java.util.LinkedList

4
最好查看您的导入,确保您实际上导入了 java.util.LinkedList,而不是其他 LinkedList。 - Tyler
2
你猜对了,干得好。就在前几天,我为了练习编程写了一个简单的链表,不应该这么快就忘记了。 - Eric Wilson
你猜得完美。 - Vadiraj S J

11

你可能正在使用JDK 1.4或更早版本进行编译,或者你的构建或IDE中语言设置是预先设置为不支持泛型的5.0以下版本。

顺便说一句,最好的方法是

List<String> stringList = new LinkedList<String>();

尽可能使用接口而非实现。

话虽如此,假设您正在编译JDK 5.0+,将语言设置为Java 5+并且这是一个java.util.LinkedList,则您的代码完全有效。


2
实际上,最好的方法是使用Google Collections :-)List<String> stringList = Lists.newLinkedList(); - ChssPly76
嗯……我正在使用JDK 7。我将尝试使用JDK 6进行编译。 我不想说我在编译器中发现了一个错误,但它还没有正式发布,所以这是有可能的。 - Eric Wilson
9
经典新手错误:“我发现编译器中有一个错误。”这可能是可能的,但相比于你犯错的概率,它非常之小。摒弃这种想法——这将是你从这一事件中学到的最好的事情。 - duffymo
打开命令行窗口,键入“java -version”,查看结果。这是唯一确定您使用的Java版本的方法。 - duffymo
还要确定你的JAVA_HOME路径。在Windows上使用echo %JAVA_HOME%,在Linux/Unix上通常使用echo $JAVA_HOME(在命令行中)。 - cletus
我有点尴尬地公开责怪编译器。无论如何,newacct先生猜到了我的问题。 - Eric Wilson

2

不要将类名命名为class LinkedList,相反你可以将其命名为class LinkedListDemo,其余声明LinkedList<String> t = new LinkedList<String>();应该保留,并且可以完美编译。


2
当您输入答案时,请阅读有关使用Markdown的注释。然后,您将能够键入“LinkedList<String>”并正确查看它。无论如何,感谢您的贡献。 - Eric Wilson

1
我曾遇到相同的问题,后来发现自己错误地使用了: import java.awt.List; 导致出现以下错误信息:"Type List doesn't take paramaters"
请改用这个: import java.util.List;

0

输入类似于这样的内容:

import java.util.LinkedList;

class LinkedListDemo { 

    public static void main(String[] args) {

    LinkedList <String> list=new LinkedList <String> ();

}}

2
目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community
我在2009年提出了这个问题。现在并不需要新的答案。 - Eric Wilson
为他人编写 - ph_10595

0

你使用了 import java.util.*;

如果你使用 import java.util.LinkedList;,你将不会遇到任何问题。


感谢您的贡献。回答问题时检查日期通常很有用——这个问题已经超过十年了,所以我不需要另一个答案,我在一段时间前得到了所需的帮助。有时候回答旧问题是有用的,当还没有有用的答案时,但是这个问题已经有了几个好的答案。 - Eric Wilson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接