草庐IT

lambda_sync

全部标签

Java 8 - 在 lambda 中抛出多个通用检查异常

在我正在从事的一个项目中,我发现了一个类,该类将其父类(superclass)的所有方法包装在一些精心设计的异常处理中。它看起来类似于:publicvoidmethod1()throwsExceptionA{StringexceptionString="";try{super.method1();}catch(ExceptionAe){exceptionString=//throwe;}finally{//}}publicvoidmethod2()throwsExceptionB,ExceptionC{StringexceptionString="";try{super.method2

Java8 Lambda 反序列化 - ClassCastException

ClassCastException在满足以下条件时由Java8在反序列化lambda时抛出:父类有一个方法,引用该方法用于自动创建一个Serializablelambda有几个扩展它的子类,上面的方法有几种用法作为方法引用,但是有不同的子类方法引用被使用后,它被序列化和反序列化所有方法引用都在同一个捕获类中使用在OracleJava编译器和运行时版本1.8.0_91上测试。请找到有关如何重现的测试代码:importjava.io.*;/***@authorMaxMyslyvtsev*@since7/6/16*/publicclassLambdaSerializationTestimp

java - Eclipse 自动完成不适用于 lambda 和类型

我使用EclipseOxygen.2Release(4.7.2)我尝试了一些lambda表达式并遇到了以下问题:我编写没有类型的lambda参数,Eclipse自动完成工作正常:如果我用类型编写lambda参数,则不会自动完成:但我可以自己写这个并且一切正常:这是Eclipse中的错误吗?有人可以解释这种行为吗? 最佳答案 是的,这是Eclipse的一个已知错误,尚未修复:Eclipsebug460921.Eclipse是开源的,欢迎为修复此错误做出贡献。 关于java-Eclipse自

除非指定参数类型,否则 Java 无法编译通用 lambda 参数

在测试时,我将我的Junit升级到5.0(因此用新版本替换了我的一些assertTrue()方法)。这样做之后,我发现我的一个测试没有编译。我将问题简化为没有junit或其他依赖项的普通旧java。结果是以下无法编译的代码:publicstaticvoidrecreate(){//ThisdoesNOTworkRecreation.assertTrue(identity((x)->Boolean.TRUE));//ThisDOESworkRecreation.assertTrue(identity((Stringx)->Boolean.TRUE));}privatestaticclas

java - 是否可以在运行时检索 lambda 表达式

昨晚我在玩Java8Lambda,我想知道是否可以在运行时检索Lambda表达式。简而言之,据我所知,Lambda表达式在运行时转换为(静态)方法,然后使用InvokeDynamics调用。举个例子:people.filter(person->person.getAge()>=minAge);哪里filter将是采用Predicate的自定义方法作为参数。这里面filter方法,在这种情况下,我如何以与Lambda表达式(person->person.getAge()>=minAge)相似(或相同)的形式检索参数?我尝试使用ASM5_BETA读取参数类的生成字节码,但我只能使用Clas

java - 如何使用 java8 lambda 表达式抛出自定义检查异常?

这个问题在这里已经有了答案:Java8:Lambda-Streams,FilterbyMethodwithException(15个答案)关闭7年前。我有下面的代码。privatestaticvoidreadStreamWithjava8(){Streamlines=null;try{lines=Files.lines(Paths.get("b.txt"),StandardCharsets.UTF_8);lines.forEachOrdered(line->process(line));}catch(IOExceptione){e.printStackTrace();}finally{

java - Lambda Metafactory 变量捕获

当使用MethodHandles.Lookup、MethodHandle、MethodType等手动创建lambda时,如何实现变量捕获?例如,没有捕获:publicIntSupplierfoo(){returnthis::fortyTwo;}/***Wouldnotnormallybevirtual,butohwell.*/publicintfortyTwo(){return42;}及其笨拙的形式,使用java.lang.invoke中的内容:publicIntSupplierfoo(){MethodHandles.Lookuplookup=MethodHandles.lookup(

java - 单行/单行lambda中的Eclipse断点?

如何在单行lambda中设置断点?例如当调用outer.doSth(event)时,我希望(eclipse)调试器停止:observable.addCallback(event->outer.doSth(event)); 最佳答案 你不能。如果你这样重构它:observable.addCallback(event->{returnouter.doSth(event);});你可以。 关于java-单行/单行lambda中的Eclipse断点?,我们在StackOverflow上找到一个类

java - Java 中的这段递归 lambda 调用是如何工作的

我最近在Java中看到了这段代码。它涉及函数和打印斐波那契数,并且有效。publicclassAppLambdaSubstitution{publicstaticFunctionY(Function,Function>f){returnx->f.apply(Y(f)).apply(x);}publicstaticvoidmain(String[]args){Functionfib=Y(func->x->{if(x让我感到困惑的部分是returnx->f.apply(Y(f)).apply(x);。Y(f)不是递归调用Y方法吗?我们一直使用函数f作为参数调用它。对我来说,这个递归调用没有

java - 使用 Java lambda 从两个 map 构建 map

我有一些代码需要帮助...我正在尝试使用两个map作为源并同时使用javalambda来构建mapMap>motorsMapping=newHashMap();motorsMapping.put("CAR",Collections.singletonList("AUDI"));motorsMapping.put("CAR_AND_BIKE",Arrays.asList("AUDI","BMW"));motorsMapping.put("BIKE",Collections.singletonList("BMW"));Map>models=newHashMap();models.put("