草庐IT

lambda表达式

全部标签

java - lambda 表达式中的错误返回类型

以下代码在IntelliJ和Eclipse中编译良好,但JDK编译器1.8.0_25出现问题。首先是代码。importjava.util.function.Predicate;publicabstractclassMyStream{staticMyStreamcreate(){returnnull;}abstractMyStreamfilter(MyPredicatepredicate);publicinterfaceMyPredicateextendsPredicate{@Overridebooleantest(Tt);}publicvoiddemo(){MyStream.creat

java - 原始数组上的 Lambda

我正在尝试使用Java8lambda演算将double[]转换为float[]。到目前为止,我刚刚创建了一个应该修改的玩具方法。试图找到转换原始数组的帮助。大多数情况下,是否有任何方法可以摆脱guava转换,因为对于大型数组来说,转换为List并返回太重。importcom.google.common.primitives.Floats;publicstaticfloat[]doubleToFloat(double[]vector){Float[]f=Arrays.stream(vector).mapToObj(x->(float)x).toArray(Float[]::new);re

Java:如何确定正则表达式模式匹配失败的原因?

我正在使用正则表达式来匹配模式是否匹配,但我也想知道它何时失败。例如,假设我有一个模式“N{1,3}Y”。我将它与字符串“NNNNY”相匹配。我想知道它失败是因为N太多了。或者,如果我将它与字符串“XNNY”进行匹配,我想知道它失败是因为字符串中包含无效字符“X”。通过查看Java正则表达式包API(java.util.regex),附加信息似乎只有在匹配成功时才能从Matcher类中获得。有没有办法解决这个问题?或者在这种情况下正则表达式甚至是一个选项? 最佳答案 我猜你应该使用解析器,而不是简单的正则表达式。正则表达式可以很好地

java - 为什么注释属性的值应该是常量表达式?

我有以下代码@UIUnitTimeout(8*60*1000)//works@UIUnitTimeout(TimeUnit.MINUTES.toMillis(8))//doesnotwork我知道根据JLS,只允许常量表达式作为注释属性的值。但为什么?为什么数据类型匹配还不够?如果要在运行时评估表达式,是否有任何可能出错的地方?每个规范背后都有逻辑推理吗? 最佳答案 注解就像类型扩展或关于类型的元数据。因为java是一种静态类型语言(意味着类型在编译时已知),注解属性数据(元数据)在编译时也是已知的似乎是合理的-您正在定义/声明关于

java - 在 Java 中使用 Lambda 函数的 AWS S3 事件通知

我正在尝试将Lambda函数用于S3Put事件通知。一旦我将任何新的JSON文件放入/添加到我的S3存储桶中,我的Lambda函数就会被调用。我面临的挑战是没有足够的文档来在Java中实现这样的Lambda函数。我找到的大部分文档都是针对Node.js的我想,应该调用我的Lambda函数,然后在该Lambda函数内,我想使用添加的json,然后将该JSON发送到AWSES服务。但是我应该为此使用哪些类?有人对此有任何想法吗?S3abdES都已设置并正在运行。lambda的自动生成代码是`@OverridepublicObjecthandleRequest(S3Eventinput,Co

C ++变换和lambda-替换循环

我想用std::变换替换for循环。由于我在算法和lambda功能方面几乎没有经验,所以我想知道这是否是正确的方法原始代码for(size_ti=0;istd::用lambda转换std::transform(dataPhase.begin(),dataPhase.end(),dataPhase.begin(),[](doublev){returnfmod(v,pi*1.00001);});我需要在这里捕获吗?在此情况下,我该怎么做才能替换使用索引的情况,如此代码:constinthalfsize=int(length/2);for(size_ti=0;i编辑:我想扩展问题(如果允许)。在这种

java - 在java中使用正则表达式提取两个特定单词之间的子字符串

我想使用java提取某些两个单词之间的子字符串。例如:Thisisanimportantexampleaboutregexformywork.我想提取“an”和“for”之间的所有内容。到目前为止我所做的是:Stringsentence="Thisisanimportantexampleaboutregexformyworkandforme";Patternpattern=Pattern.compile("(?效果不错。但是我想做另外两件事如果句子是:Thisisanimportantexampleaboutregexformyworkandforme.我想提取到第一个“for”,即i

Java 8 : Duplicate method name&signature lambda

我正在使用Java8lambda、方法引用和接口(interface)默认方法来探索柯里化(Currying)的美妙世界,然后我遇到了这个我无法理解的Java错误。代码如下:publicclassMain{publicinterfaceCurryBiConsumerextendsBiConsumer{defaultpublicCurryConsumercurryFirst(Tt){return(u)->accept(t,u);}defaultpublicCurryConsumercurrySecond(Uu){return(t)->accept(t,u);}}publicinterfa

java - Jersey 和 Java 8(Lambda 表达式)

我使用Jersey版本1.18.1(com.sun.jersey)、Spring和Java8。如果我将Java8Lambda表达式放入REST服务中,它会崩溃。如果我删除lambda表达式,它将起作用。@Service@Path("/hello")publicclassHello{@GETpublicStringhello(){newArrayList().stream().filter((str)->str.length()>0);return"hello";}}我使用的是com.sun.jersey(1.18.1版本)。完整的堆栈跟踪:SEVERE:Allocateexceptio

具有非 SAM 接口(interface)的 lambda 的 Java 习惯用法

在Java中,可以使用lambda而不是匿名类来优雅地实现具有单个抽象方法的接口(interface)(即SAM类型或功能接口(interface))://SAMActionListenerwithanonymousimplementationbutton.addActionListener(newActionListener(){publicvoidactionPerformed(Evente){System.out.println("buttonviaanon!");}});可以替换为://SAMActionListenerwithlambdaimplementationbutto