我的Java编译器javac 1.6.0_37
在编译以下小程序时失败:
import java.util.*;
public class QueueTest {
public static void main( String args[] ) {
Queue<String> q = new LinkedList<String>();
}
}
错误信息如下:
QueueTest.java:5: incompatible types
found : java.util.LinkedList<java.lang.String>
required: Queue<java.lang.String>
Queue<String> q = new LinkedList<String>();
^
1 error
根据文档,LinkedList<E>实现了Queue<E>,因此应该可以编译。我已经使用javac 1.5.0_08成功编译了这段代码。另外,如果将泛型排除在外,问题仍然存在(即使没有泛型,它也无法编译)。
我的问题是:有人认为这不是一个bug吗?
java.util.Queue<String> q = new java.util.LinkedList<String>();
吗?也许你当前的包中有其他类似Queue<T>
的类,它可能会搞乱事情。 - amitQueue<java.lang.String>
,而不是java.util.Queue<java.lang.String>
。请从类路径中删除在默认包中的Queue类。并且永远不要使用默认包。 - JB Nizet