这是Java泛型类型推断编译器错误吗?

这是Java泛型类型推断编译器错误吗?,java,generics,compiler-errors,Java,Generics,Compiler Errors,我正在考虑在函数的调用位置进行约束类型推断。在下面的代码段中,我得到了main函数中第一个推断调用的编译错误,正如预期的那样(String不是X的子类型,因此我们不能推断这种类型)但是,当我用接口替换抽象类并执行相同的操作时,我没有得到编译错误,即使String显然不是Y的子类型。这一定是一个编译器错误,对吗?(我已经试过JDK1.8.121+1.8.161) 公共类为什么 { 静态抽象类X { } 静态Z推断1() { 返回null; } 静态接口Y { } 静态Z推断2() { 返回null

我正在考虑在函数的调用位置进行约束类型推断。在下面的代码段中,我得到了main函数中第一个推断调用的编译错误,正如预期的那样(
String
不是
X
的子类型,因此我们不能推断这种类型)但是,当我用接口替换抽象类并执行相同的操作时,我没有得到编译错误,即使
String
显然不是
Y
的子类型。这一定是一个编译器错误,对吗?(我已经试过JDK1.8.121+1.8.161)

公共类为什么
{
静态抽象类X
{
}
静态Z推断1()
{
返回null;
}
静态接口Y
{
}
静态Z推断2()
{
返回null;
}
公共静态void main(字符串[]args)
{
字符串x=infer1();
字符串y=infer2();
}
}