gpt4 book ai didi

Java 8 函数 - 不兼容的类型

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:10:46 24 4
gpt4 key购买 nike

我正在尝试将 java 8 函数指针分配给变量,但在构建时出现类型不兼容错误。看来编译器不遵守“?扩展 BaseEntity”。

对于下面的代码,ChildEntity 直接扩展了 BaseEntity:

private int getValue(ChildEntity entity) {
return 0;
}

Function<? extends BaseEntity, ?> function = this::getValue;

错误:基础实体无法转换为 ChildEntity。

最佳答案

考虑如何使用function。您将向其中传递一个继承自 BaseEntity 的任何类型的对象。

想象一下 SpouseEntity 也直接派生自 BaseEntity。您能否将 SpouseEntity 传递到需要 ChildEntity 的方法中?

不,你不会,因为 SpouseEntity 不是从 ChildEntity 派生的。

换句话说,函数指针指向的方法的参数必须不比函数指针本身声明的参数派生更多。函数指针参数必须派生自或与其指向的方法中声明的参数相同。

(请注意,返回类型的工作方式完全相反,这就是 super 存在的原因,因为方法的返回类型必须继承自或与其函数指针的返回类型相同)。

关于Java 8 函数 - 不兼容的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45515636/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com