首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否可以将参考运算符与其他运算符结合使用?

是否可以将参考运算符与其他运算符结合使用?
EN

Stack Overflow用户
提问于 2022-03-29 11:33:42
回答 2查看 47关注 0票数 -1

假设我们上了这门课:

代码语言:javascript
运行
复制
public class MyClass {
    final int value = 0;

    public int getValue() {
        return value;
    }
}

是否可以以某种方式获取getValue()方法的输出并对其进行增量,或者通过使用引用运算符而不是lambda对其进行任何计算?

我想要实现的是这样的东西,但是与引用运算符

代码语言:javascript
运行
复制
Function<MyClass, Integer> getVal = x -> x.getValue() + 1;

如果我写这样的东西,我会得到一个错误:

代码语言:javascript
运行
复制
Function<MyClass, Integer> getVal = MyClass::getValue + 1;
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-29 12:25:22

,那是不可能的。

方法引用是一个表达式,它有一个值。值的类型是在编译时计算的,这取决于使用它的上下文(这称为多表达式)。方法引用始终是函数接口的实例。

在您的示例中,MyClass::getValue返回一些兼容的接口,但是表达式MyClass::getValue + 1导致+操作符必须处理该接口。

JLS§15.13.3中,您可以阅读有关方法引用的内容。

票数 2
EN

Stack Overflow用户

发布于 2022-03-29 12:15:00

我不知道这就是lamba表达式的问题所在,但是您总是可以包装表达式并使用对这些包装器的引用。

代码语言:javascript
运行
复制
stream.map(this::doIt)

public int doIt(MyClass x){
   return x.getValue()+1;
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71661264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档