使用泛型时,我遇到了一些有点违反直觉的编译器错误。我不明白为什么在这里使用原始类型会导致这样的失败。还有其他人经历过这个吗?
public class Test {
public static void main() {
// works
Alpha<Void> a1 = null;
a1.alpha().endBeta().endAlpha();
// compile error: cannot find symbol 'endAlpha()'
Alpha a2 = null;
a2.alpha().endBeta().endAlpha();
}
interface Alpha<T> {
Beta<Alpha<T>> alpha();
T endAlpha();
}
interface Beta<T> {
T endBeta();
}
}
答案 0 :(得分:2)
当您使用原始类型的引用时,在调用方法或在该对象上使用字段时,将忽略所有泛型。
这是您不应在新代码中使用原始类型的众多原因之一。