Tag: lambda

Eclipselink忽略具有lambda表达式的实体类

我正在使用EclipseLink(2.5.1,也尝试过2.5.2-M1)构建一个java SE 8(oracle 1.8.0-b129)应用程序,并且有一个Entity类,它被EclipeLink忽略,尽管被正确注释并且在persistence.xml文件中引用。 日志显示没有提及类,没有为它生成模式,等等。使用实体给出’抽象模式类型未知’错误。 我想我终于找到了原因,并认为我会分享。 显然,EclipseLink不喜欢带有lambda表达式的类。 这是一个简单的类,可以重现问题: @Entity public class LambdaEntity { @Id private Integer id; public void theLambda() { Arrays.asList(1, 2, 3).stream().filter(m -> m == 2); } } lambda表达式甚至不必使用持久属性,它在类中的简单存在就足够了。 有谁知道这会导致什么? 我猜测EclipeLink会对生成的字节码产生影响,但我发现很奇怪它会默默地忽略该类。 如果您尝试在与其他实体的关联中使用此实体,EclipseLink将提供错误,指出实体未在persistence.xml文件中定义。 stacktrace的一部分: Local Exception Stack: Exception [EclipseLink-30005] (Eclipse Persistence Services – 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.PersistenceUnitLoadingException Exception Description: An exception was thrown while searching for […]

从Java 8中的Method返回Lambda?

我刚刚开始使用Java 8,我想知道是否有办法编写一个返回Function的方法? 现在我的方法如下: Function getMyFunction() { return new Function() { @Override public String apply(Integer integer) { return “Hello, world!” } } } 有没有办法在Java 8中更简洁地编写? 我希望这会起作用,但事实并非如此: Function getMyFunction() { return (it) -> { return “Hello, world: ” + it } }

Java 8 Lambda分组同时使用X和Y.

我正在寻找一个lambda来优化已检索的数据。 我有一个原始的结果集,如果用户没有更改我希望使用java的lambda按结果分组的日期。 我是java的lambdas的新手。 我正在寻找的lambda与这个查询相似。 select z, w, min(x), max(x), avg(x), min(y), max(y), avg(y) from table group by x, w;

如何在IntelliJ IDEA中自动完成lambdas?

我正在使用IntelliJ IDEA 13和Java 8,并想知道如何自动完成lambdas。 在Java 8之前,我当然使用了匿名内部类。 我通过输入“new”并按Ctrl + Space自动完成: 并选择第一个选项。 现在使用Java 8我也想生成lambdas,推断参数和所有,但我找不到它的自动完成。 请注意,上面的示例非常简单,但是当您有多个generics类型的参数时,例如JavaFX Listeners等,自动完成function就派上用场了。

Java Lambdas:它如何在JVM中运行并且是OOP吗?

例如,在匿名内部类的情况下,传递(匿名)对象引用并执行该对象的方法。 Lambda是代码块,将在需要时执行。 遇到lambdas时JVM中会发生什么? JVM在哪里存储与lambdas相关的代码块(Heap:Young,Old或Permanent Generation)? 我尝试搜索,我得到了使用lambdas的语法但是无法理解JVM中发生的事情,因为在JAVA中一切都是基于对象的。 所以在OOP的背景下,lambda是如何工作的? lambda违反了OOP概念吗? Lambda是否适合垃圾收集器,因为没有创建对象因此不用担心内存问题和清​​除内存?

使用本地类时无效的构造函数引用?

给出以下代码: package com.gmail.oksandum.test; import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { } public void foo() { class LocalFoo { LocalFoo(String in) { //Some logic } } List ls = new ArrayList(); ls.stream().map(LocalFoo::new); //Line 21 } } 我的IDE没有给我任何错误。 也就是说,直到我尝试构建项目并运行它。 当我这样做它给我一个编译器错误,如下所示: Error:(21, 24) java: incompatible types: cannot infer type-variable(s) R (argument […]

Lambda的行为与匿名内部类不同

在做一些基本的lambda练习时,一个看似相同的匿名内部类的输出给了我一个不同于lambda的输出。 interface Supplier { T get(T t); } 场景#1 Supplier s1 = new Supplier() { @Override public Integer get(Integer t) { return t; } }; Supplier s2 = t -> t; System.out.println(s1.get(2)); System.out.println(s2.get(2)); 输出2和2 。 这里没什么新鲜的。 但是当我这样做时: 场景#2 Supplier s1 = new Supplier() { @Override public Integer get(Integer t) { return t++; } }; Supplier […]

确定lambda表达式在Java中是无状态还是有状态

是否有一个函数接受对lambda表达式的引用并返回一个布尔值,说明lambda表达式是否为无状态? 如何确定lambda表达式的有状态?

你能在运行时检查Java 8 lambda的字节码吗?

如果你有像这样的匿名类 Predicate isEmpty = new Predicate() { public boolean test(String t) { return t.isEmpty(); } }; 传递给isEmpty的引用的库可以检查字节代码以查看它的作用并可能对其进行操作。 有没有办法可以为lambdas做到这一点? Predicate isEmpty = String::isEmpty; 例如,假设有这个代码和字节码 public class Main { public static void test(Predicate tester) { System.out.println(“tester.getClass()= ” + tester.getClass()); System.out.println(“tester.getClass().getClassLoader()=”+ tester.getClass().getClassLoader()); } public static void main(String… args) { Predicate isEmpty = String::isEmpty; test(isEmpty); } } $ javap […]

Java 8 Lambda问题在递增计数时有效最终

我想在以下场景中使用Java 8 Lambda表达式,但我得到的是在封闭范围内定义的局部变量fooCount必须是final或者有效的final 。 我理解错误信息的内容,但我需要在这里计算百分比,所以需要增加fooCount和barCount然后计算百分比。 那么实现它的方法是什么: // key is a String with values like “FOO;SomethinElse” and value is Long final Map map = null; …. private int calculateFooPercentage() { long fooCount = 0L; long barCount = 0L; map.forEach((k, v) -> { if (k.contains(“FOO”)) { fooCount++; } else { barCount++; } }); final int fooPercentage = […]