草庐IT

lambda表达式

全部标签

java - 在 Jaspersoft Studio 6.3 中的 TextField 表达式中使用 lambda 表达式

我想像这样在TextField表达式中使用lambda表达式:Arrays.asList($F{field1},$F{field2},$F{field3}).stream().filter(i->i!=null).collect(java.util.stream.Collectors.joining("/"))假设这些字段的值:$F{field1}=1$F{field2}=null$F{field3}=2TextField评估的预期结果是:1/2而不是我在IDE中收到错误:Lambdaexpressionsareallowedonlyatsourcelevel1.8orabove这是编

Java 8 lambda 错误

我正在尝试使用FlightRecorder和MissionControl分析Java应用程序,但我遇到了一些与lambda函数相关的错误。该应用程序运行完美-错误仅出现在FR/MC中。简单程序:importjava.util.function.Supplier;publicclassTestClass{publicstaticvoidmain(String[]args){Suppliers=()->"VALUE";//Java版本:javaversion"1.8.0_162"Java(TM)SERuntimeEnvironment(build1.8.0_162-b12)JavaHotS

c# - 正则表达式在 C# 中匹配,但在 java 中不匹配

我有以下正则表达式(很长,我知道):(?-mix:((?-mix:(?-mix:\{\%).*?(?-mix:\%\})|(?-mix:\{\{).*?(?-mix:\}\}?))|(?-mix:\{\{|\{\%)))我用来分割一个字符串。它在C#中正确匹配,但是当我将代码移至Java时,它不匹配。此正则表达式是否有任何仅适用于C#的特殊功能?源代码生成为:Stringsource=Pattern.quote("{%assignfoo=values%}.{{foo[0]}}.");在C#中它是:stringsource=@"{%assignfoo=values%}.{{foo[0]}

java - 用于匹配包含 <n> 个字符的字符串的简单正则表达式

我正在编写这个正则表达式,因为我需要一种方法来查找没有n个点的字符串,我虽然负面展望是最好的选择,但到目前为止我的正则表达式是:"^(?!\\.{3})$"我读这个的方式是,在字符串的开始和结束之间,可以有或多于或少于3个点,但不能有3个。令我惊讶的是,这与hello.here.im.greetings不匹配相反,我希望匹配。我正在用Java编写,所以它有点像Perl的味道,我没有转义花括号,因为它在Java中不需要有什么建议吗? 最佳答案 你在正确的轨道上:"^(?!(?:[^.]*\\.){3}[^.]*$)"将按预期工作。你的

java - 创建自定义方法安全表达式的最佳方法

我正在尝试创建我自己的方法安全表达式,我想在@PreFilter和@PostFilter注释中使用它。在搜索教程和类似问题时,我发现了两种继续进行的方法。首先是扩展DefaultMethodSecurityExpressionHandler并覆盖createSecurityExpressionRoot,以提供自定义的SecurityExpressionRoot。@PreAuthorize('isOwner(#someEntity)')第二种方法是简单地使用@Component类,并在@Pre/@Post过滤器中使用@bean.method()@PreAuthorize("@mySecu

java - AWS Lambda Java 兼容性

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。ImprovethisquestionAWS推出了AWSLambda,一个用于动态应用程序的事件驱动计算服务,我希望它能让我实现以下目标:它应该获取一个链接,然后执行HTTP请求并处理来自该请求的传入响应。对于这个过程,我需要多个程序,它们在队列中执行。所以Lambda函数必须从Lambda函数执行几个Java/C++程序和一些Python脚本。如果这不可能,我能否将此代码/可执行文件转换为Node.js模块并以这种方式在同一过程中使

java - 在 Java 中使用 lambda 表达式多次执行一个方法

在Java8中使用lambda表达式多次执行代码块的最简单快捷的方法是什么?例如,将替换以下内容的代码:for(inti=0;i 最佳答案 您可以使用IntStream.range,但我看不出这种方法比您已经在使用的循环有多大优势。IntStream.range(0,20).forEach(i->doSomething()); 关于java-在Java中使用lambda表达式多次执行一个方法,我们在StackOverflow上找到一个类似的问题: https:

java - 序列化 lambda 而没有 serialVersionUID?

我正在尝试了解序列化如何与Java及其最新版本一起工作。我正在尝试像这样序列化一个lambda:Runnabler=(Runnable&Serializable)()->{System.out.println("Thisisatest");};但我注意到我没有关于缺少serialVersionUID变量的警告。正常吗?我知道它将在运行时生成,但强烈建议定义它:https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.htmlIfaserializableclassdoesnotexplicitlydeclareaser

Java For-Loop - 终止表达式速度

在我的java程序中,我有一个大致如下所示的for循环:ArrayListmyList=newArrayList();putThingsInList(myList);for(inti=0;i由于列表的大小没有改变,我尝试通过用变量替换循环的终止表达式来加速循环。Myideawas:SincethesizeofanArrayListcanpossiblychangewhileiteratingit,theterminationexpressionhastobeexecutedeachloopcycle.IfIknow(buttheJVMdoesn't),thatitssizewillst

java - 将 lambda 转换为方法引用

有人可以帮我转换以下代码以使用方法引用吗?我正在努力思考这个新语法,但当它变得比映射到单个方法调用的单个变量更复杂时,我很快就迷路了:getWorkspaces().stream().forEach((ws)->{DataStoreInfodefaultDataStore=getDefaultDataStore(ws);if(defaultDataStore!=null){other.setDefaultDataStore(ws,defaultDataStore);}});我从这个开始,但它不起作用:)getWorkspaces().stream().map(this::getDefa