Sun JRE java C和Eclipse java编译器之间的不一致?

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

这使我困惑。下面的代码在Eclipse下编译得很好

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(); 
}