Java 为什么三元运算符会因类型不匹配错误而失败?

Java 为什么三元运算符会因类型不匹配错误而失败?,java,conditional,type-inference,ternary-operator,Java,Conditional,Type Inference,Ternary Operator,我有以下简单的代码段: List<XXXXBean> queryPeriodData() { if (CollectionUtils.isEmpty(res)) { return Collections.emptyList(); } return res; } 错误消息是 “类型不匹配:无法从列表转换为列表” 我不知道这两种方法之间的区别。尝试Collections.emptyList()在语句中我使用Eclipse Luna发行版

我有以下简单的代码段:

List<XXXXBean> queryPeriodData()
{
    if (CollectionUtils.isEmpty(res))
    {
        return Collections.emptyList();
    }

    return res;
}
错误消息是 “类型不匹配:无法从列表转换为列表


我不知道这两种方法之间的区别。

尝试
Collections.emptyList()
在语句中

我使用Eclipse Luna发行版和jdk 1.7.067。使用
返回Collections.emptyList()
确保两个可能值之间的类型兼容性。有关详细讨论,请参阅。Java 8中类型推断的可能重复已得到改进。您的第二个示例现在可以工作了。这是java,它与c无关:)的区别在于:在第一个示例中,对于语句“return Collections.emptyList();”编译器可以计算出返回类型。但在第二个示例中,在“Collections.emptyList()”表达式中,编译器不知道返回类型,因此默认情况下返回List。是这样吗?
return CollectionUtils.isEmpty(res) ? Collections.emptyList() : res;