我的课程如下:
public class Tree<T extends Comparable<? super T>> {
// private data omitted
private Tree() {} // non parametric private constructor, not exposed
// static factory method
public static <T extends Comparable<? super T>> Tree<T> newInstance() {
return new Tree<T>();
}
}
现在我从另一个班级尝试这个:
public class TestClass {
public void test() {
Tree<Integer> tree = Tree.newInstance(); // fail
}
}
但是当我使用公共构造函数时,以下代码可以正常工作
public void test() {
Tree<Integer> tree = new Tree<Integer>();
}
我可能做错了什么?
以下是错误消息:
Incompatibile types:
required: structures.trees.Tree<java.lang.Integer>
found: <T>structures.trees.Tree<T>
现在古怪:您可以自己尝试一下。此代码适用于我的Eclipse 3.6 Helios,但它不适用于我的NetBeans 6.9.1。我无法相信这是IDE的问题(我甚至使用相同的JDK)......一个想法? :o
答案 0 :(得分:2)
BalusC评论 - javac bug。
通过显式输入解决:
Tree<Integer> tree = Tree.<Integer>newInstance();