Java 三元运算符对泛型类型推断的影响
2022-09-01 10:57:39
public List<String> foo1() {
List<String> retval = bar();
if (retval == null)
return Collections.emptyList();
else
return retval;
}
public List<String> foo2() {
List<String> retval = bar();
return retval == null ? Collections.emptyList() : retval;
}
为什么编译正常而有错误?(更准确地说是“类型不匹配:无法从 List<capture#1-of 转换?将 Object> 扩展为 List<String>”foo1()
foo2()
)
我本来以为两个函数都会编译成相同的字节码,所以一个聪明的编译器应该推断出正确的类型......emptyList()