Sun JRE java C和Eclipse java编译器之间的不一致?
这使我困惑。下面的代码在Eclipse下编译得很好Sun JRE java C和Eclipse java编译器之间的不一致?,java,generics,compiler-errors,Java,Generics,Compiler Errors,这使我困惑。下面的代码在Eclipse下编译得很好 package com.example.gotchas; public class GenericHelper1 { static <T> T fail() throws UnsupportedOperationException { throw new UnsupportedOperationException(); } /** * just calls fail() * @return somethi
package com.example.gotchas;
public class GenericHelper1 {
static <T> T fail() throws UnsupportedOperationException
{
throw new UnsupportedOperationException();
}
/**
* just calls fail()
* @return something maybe
*/
public boolean argh() { return fail(); }
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
给出了什么,如何修复它?这两个编译器之间存在不一致。我发现了类似的bug,有时在Eclipse中,有时在JDK中 我不确定在这种情况下哪个是错的。问题似乎是由以下因素共同造成的: 泛型和自动装箱 在任何情况下,如果显式指定类型参数,而不是依赖类型推断,它将编译:
public boolean argh() {
return GenericHelper.<Boolean>fail();
}
public boolean argh(){
返回GenericHelper.fail();
}
这是javac
-“类型变量返回约束的推理失败”中的一个已知错误:
虽然这是编译器的一个问题,但将返回类型更改为Boolean对象将有助于解决此问题 公共布尔argh(){return fail();}
public boolean argh() {
return GenericHelper.<Boolean>fail();
}