【发布时间】:2019-03-08 19:21:13
【问题描述】:
下面是我声明了两个方法的代码,它们的返回类型是有界参数,但一个是基于接口的,而另一个是基于类的。在 test() 方法中,对于有界参数从预期的 Class 扩展的方法,将返回类型分配给 String 失败,但是当有界参数基于接口时,编译器不会抛出错误。你能解释一下为什么会这样吗?
import java.io.FileInputStream;
import java.util.function.Predicate;
public class Dummy
{
<T extends Predicate<String>> T getBoundedByInterface()
{
return null;
}
<T extends FileInputStream> T getBoundedByClass() {
return null;
}
public void test()
{
String compilationError = getBoundedByClass(); //Expected
String works = getBoundedByInterface(); //No compilation error. Why?
}
}
【问题讨论】:
标签: java generics bounded-types