问题内容: 相当于kotlin中的代码,我尝试执行的操作似乎无效: 在里面: 问题答案: 如果是Java,则可以使用SAM转换: 否则,如果界面是Kotlin … …您可以使用语法匿名实现它:
问题内容: 我正在尝试合并流列表并对其进行处理。 在这里,我得到b的几个列表。 但是,我只想将我的所有b收集在一个列表中。有任何想法吗 ? 问题答案: 这就是flatMap的用途:
问题内容: 我有一个,我想在一行中过滤掉负值(创建一个没有新数组)而不添加循环。使用Java 8 Lambda表达式是否可能? 在python中,将使用生成器: 是否可以在Java 8中做类似的简洁操作? 问题答案: 是的,您可以通过在数组中创建一个,滤除负片,然后将流转换回数组来实现此目的。这是一个例子: 如果要过滤不是的引用数组,则需要使用采用的方法来获取原始类型的数组作为结果:
问题内容: 我刚刚开始研究Java 8,并尝试了lambda,我认为我想尝试重写最近写的一件非常简单的东西。我需要将字符串映射到列映射转换为另一个字符串映射到列映射,其中新映射中的列是第一个映射中列的防御性副本。列具有复制构造函数。到目前为止,我最接近的是: 但我敢肯定,必须有更好的方法来完成这项工作,对于您的建议我将不胜感激。 问题答案: 您可以使用收集器:
问题内容: 该文章建议,lambda 不能实现为匿名内部类(由于性能)。它给出了一个示例,可以将lambda表达式编译为类的(静态)方法。 我尝试了一个非常简单的代码段: 输出为: 因此,它不是同一实例。这也不是中央“ Lambda Factory”实例。 那么如何实现lambda? 问题答案: 假设您传递的是 实际的lambda表达式 而不是方法引用,则表达式本身将被编译为单独的合成方法。除了预
问题内容: 由于已经知道它很容易地添加 _序列化_支持lambda表达式时,目标接口已经不继承,就像。 我想要的是一种相反的方法,当目标接口 确实 继承时,显式删除对序列化的支持。 由于您无法从类型中删除接口,因此基于语言的解决方案可能看起来像。但是据我所知,还没有这样的解决方案。(如果我错了,请纠正我,这将是一个完美的答案) 即使在过去实现了类的合法行为并且在程序员控制下的类的情况下,也拒绝序列
问题内容: 考虑以下 几乎可 编译的Java 8代码: 您会注意到抛出编译器错误: 变量用户已在方法main(String [])中定义 我的问题是:为什么Lambda表达式会考虑与已经定义的Lambda表达式在同一行 初始化 的变量?我知道Lambda会在外部查找(并使用)局部变量,因此您不能将在Lambda内部使用的变量命名为与外部变量相同。但是为什么 要 定义的变量 被 认为 已经 定义?
问题内容: 如果您查看字节码 Java 8更新121生成的字节码是 该方法被调用的,结果被忽略。 这是间接的空引用检查吗? 当然,如果您跑步 这将触发NullPointerException。 问题答案: 是的,调用已成为规范的“测试”成语,正如预期的那样,这是一种廉价的内在操作,而且我想,如果未使用。 另一个示例是使用不是的外部实例创建内部类实例: 编译为 另请参阅JDK-8073550: 我们
问题内容: 我想知道是否有人可以向我解释以下怪异现象。我正在使用Java 8 Update 11。 给定这种方法 如果我首先构造一个函数Object,并将其传递给上面的方法,那么事情就会编译。 但是,如果我以lambda形式内联函数,则编译器会说 未报告的异常X; 必须被抓住或宣布被抛出 更新 :原来错误消息由maven缩写。如果直接使用javac编译,则错误为: 另请参阅此处以获取可运行的测试代
问题内容: 在Java中,lambda是否可以接受多种不同类型? 即:单个变量起作用: Varargs也可以工作: 但是我想要可以接受许多不同类型参数的东西,例如: 为了方便起见,主要用途是在函数内部具有小的内联函数。 我环顾了Google并检查了Java的Function Package,但找不到。这可能吗? 问题答案: 如果使用多个类型参数定义这样的功能接口,则是可能的。没有这样的内置类型。(
问题内容: 我试图为对象类型分配一个lambda: 它给我一个错误的说法: 为什么会这样,怎么做? 问题答案: 这是不可能的。根据错误消息不是功能接口,即具有单个公共方法的接口,因此您需要使用引用类型,例如
问题内容: 我意识到Java 8 lambda实现可能会发生变化,但是在lambda build b39中,我发现仅当lambda表达式返回非空类型时才可以省略花括号。例如,这将编译: 但是删除这样的括号: 给出错误 谁能解释这是怎么回事? 问题答案: 当lambda主体是单个表达式或void方法调用时,可以省略花括号。每个表达式都求值,因此不能为空。 如果lambda的主体是语句块(例如,一系列
问题内容: 如何用Java编写“ AWS Lambda响应”,以使Cognito满意? 像这样的东西被传递给lambda函数 现在,我需要用Java进行响应。然后发送回Cognito。此刻,Cognito抛出 “ InvalidLambdaResponseException”。 下面的Java代码仅返回事件。 问题答案: 您只需要一个这样的类: 序列化后将如下所示: 并将其作为您的lambda的输
问题内容: 我可以通过以下方法轻松地在Scala中实现此目标: 因此,如果我给它{1,2},{3,4},我将返回{1,3},{1,4},{2,3},{2,4} 我希望能够使用流将其转换为java 8。 我有点困难,我希望能够进一步扩展,因为我希望能够从两个以上的列表中生成许多排列的测试样本。 即使使用流,是否也会不可避免地成为一团糟呢?还是我不够用自己? 在意识到我正在寻找笛卡尔积之后,发现了一些
问题内容: 我正在使用Java 8,并且遇到了一个基本场景,该场景说明了catch 22,其中修复一个编译错误会导致另一个编译错误。该场景(这只是从更复杂的示例中简化而来的一个示例): 我收到一个编译错误: 封闭范围中定义的局部变量结果必须是final或有效的final 如果我将第一行更改为: 我在最后一行收到编译错误: 局部变量结果可能尚未初始化 似乎这里唯一的方法是将我的结果预先初始化为Arr