我能将此消费者转换为lambda吗?

时间:2015-08-24 21:05:28

标签: java lambda

标题是

。 我希望将此代码转换为lambda,这是可能的吗?

List<Person> SortedList = people.OrderBy(o=>o.Age).ToList();

2 个答案:

答案 0 :(得分:7)

这不是直接可能的,没有。

Lambdas不具备状态(在他们从周围环境捕获的任何状态之外)。即使它们可以,访问它也有点尴尬,因为artisan migrate:rollback引用了周围的上下文(即,定义了lambda的方法的对象), not < / em> lamdba的实例。这是JLS 15.27.2中指定的。

可以做一些事情,比如在lambda之前声明this,然后用它来管理AtomicReference<String>状态;但这可能是对lambdas的滥用,而不是对它们的习惯用法。 Lambdas真的被设计成非常无状态,除非他们捕获周围环境的状态(这就是为什么15.27.2)指定lastLine引用该上下文而不是lambda)。

答案 1 :(得分:1)

您不能拥有封装的字段,但可以引用1

的数组
String[] lastLine = { null };
crashFile.forEach(line -> {
    if((title == null || title.equals("")) && line.contains("at")) {
        title = lastLine[0];
    }
    lastLine[0] = line;
});
System.out.println("The last line was " + lastLine[0]);