当前位置: 首页 > 知识库问答 >
问题:

这是java lambda在设计上的一个限制吗

王飞英
2023-03-14
(int a, int b,int c)->a+b+c

对于这个简单的案例,我有两个选择:

>

  • 定义功能接口。单个抽象方法应该是int add(int a,int b,int c),方法名和可变量名不重要。

    使用方法引用。我必须定义一个类/方法或使用具有签名int add(int a,int b,int c)的现有方法

  • 共有1个答案

    邵星河
    2023-03-14

    在Java中,您必须将每个lambda表达式目标为特定的函数接口类型。这是设计的,在实践中意味着函数不是语言的一等公民。

    所以,是的,你必须回到OOP世界。

    但是,您可以使用function内置类型以其currified形式定义函数:

    Function<Integer, Function<Integer, Function<Integer, Integer>>> add =
        a -> b -> c -> a + b + c;
    
    int result = add.apply(1).apply(2).apply(3); // 6
    
     类似资料:
    • 问题内容: 我有两个表:gem和gemdetail保持连接状态。我试图将LEFT JOIN限制为gems表中的10条记录。也有两个其他表联接(gemreply和用户),但它们不会导致该问题。以下内容不起作用: 这将返回的行总数限制为10,但是由于每个gem有多个明细记录,所以我剩下不到10个gem记录。我已经阅读了每个“ LIMIT”帖子,但没有发现这种情况。 更新1:好的-感谢jviladric

    • 我想知道Json响应体的字节大小是否会在改版时引起问题。 现在,我遇到了一个使用默认的OkHttp客户端的修改的回调的随机问题,在Http拦截器日志中,所有的事情都显示为OKK,但在代码中,它将调用视为失败并抛出一条简单的消息 java.net.SocketTimeoutException:超时详细信息消息:timeout 或 插座关闭。java.net.SocketException 不多不少。

    • 最近在一次采访中,我解释了我所研究的一个框架。我说过,我们通过使用模板方法设计模式提供扩展性,创建了一个控制反转。我说这是一个控制反转的例子,我们的框架调用框架用户实现的方法,采访者说模板方法设计模式不是IOC的例子。我想知道我对国际奥委会的理解是否有误?

    • 这个问题在我的项目中经常出现。作为一个例子,假设我有两个接口,一个从API检索信息,另一个解析这些信息。 现在,我可能需要有不同的API,因此我将有许多的实现,但每个实现都需要自己的。 这看起来与Bridge设计模式所建议的非常相似,但是该模式允许任何APIClient使用任何APIParser(我说的对吗?) 那么,有没有更好的解决方案呢?或者也许这很好,不需要重构它。 另外,也许parse不是

    • 问题内容: 我正在从Java Collection Framework寻找一个不允许使用null元素的类。 你认识一个吗 问题答案: 大多数实现(值得注意的例外)不接受。 是一种不允许值的专用实现。

    • 我知道ReentantLock使用AbstractQueuedSynsynizer(AQS)来实现Lock。但是实现的细节,我无法理解。 我知道AQS使用挥发性、CAS和自旋来同步。但是,这些动作只控制“状态”成员。 尽管如此,我仍然支持你。停车并上锁。unpark可以同步线程的缓存线。但如果从来没有争用,就永远不会调用LockSupport方法。像这样:1。穿线起跑 2.线程B启动并运行 3.线