首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在java8中引入lambda表达式

为什么在java8中引入lambda表达式
EN

Stack Overflow用户
提问于 2014-04-16 01:37:28
回答 3查看 1.3K关注 0票数 0

我知道,Java代码很容易阅读,也很容易理解,但是从我的view.What角度来说,引入lambda表达式非常复杂,这让甲骨文认为他们引入了java8作为主要的吸引力。

因为我是一个java程序员,所以我想知道为什么它是重要的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-04-16 02:15:54

考虑一下http://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html#approach1

Lambda可以用来以一种可读的方式使代码可扩展。

(免责声明,我并不真正“了解”C++,我更喜欢使用Java )

为了使功能脱离特定的范围,例如,检查人员,并在满足某些条件的情况下打印它们,Java以前可能会使用对象来实现这一点。

代码语言:javascript
复制
public static void printPersons(
    List<Person> roster, CheckPerson tester) {
    for (Person p : roster) {
        if (tester.test(p)) {
            p.printPerson();
        }
    }
}

interface CheckPerson {
    boolean test(Person p);
}

class CheckPersonEligibleForSelectiveService implements CheckPerson {
    public boolean test(Person p) {
        return p.gender == Person.Sex.MALE &&
            p.getAge() >= 18 &&
            p.getAge() <= 25;
    }
}

你用的是:

代码语言:javascript
复制
printPersons(
    roster, new CheckPersonEligibleForSelectiveService());

作为一名非Java开发人员,这在我看来有点愚蠢。Person显然是一个重要的对象,但是,CheckPersonCheckPersonEligibleForSelectiveService不是那么有动机的类,仅仅是因为我们需要它们。

感觉他们封装的最重要的是有检查的功能。如果我们可以简单地传递它,我们就不需要处理类的脚手架了。哦,但看起来我们可以和兰巴达!

代码语言:javascript
复制
printPersons(
    roster,
    (Person p) -> p.getGender() == Person.Sex.MALE
        && p.getAge() >= 18
        && p.getAge() <= 25
);

这段代码对我来说是超级可读的,尽管我停止了用Java 4编写Java。

从技术上讲,上面的论点并不公平,因为您可以更简洁地使用这样的对象:

代码语言:javascript
复制
printPersons(
    roster,
    new CheckPerson() {
        public boolean test(Person p) {
            return p.getGender() == Person.Sex.MALE
                && p.getAge() >= 18
                && p.getAge() <= 25;
        }
    }
);

但是,您真的需要为测试创建一个对象吗?我知道一些关于匿名类构造的糟糕的面试问题,所以它可能不是最直观的语法。

但关键是,如果函数是我们需要赋予代码的重要内容,那么我们应该有一种机制,可以将函数赋予代码。这是用羔羊做的。

票数 3
EN

Stack Overflow用户

发布于 2014-04-16 01:49:23

我认为这里的单词是“分布式处理”。您可能已经注意到,在最近几年中,在不添加越来越多的内核的情况下,更难创建更快的处理器。

票数 1
EN

Stack Overflow用户

发布于 2014-04-16 01:48:14

要回答这个问题,你不是带着开发人员的帽子思考的。你认为自己是个程序员。有什么关系呢?编码器是如果有人给你逻辑,你写的代码来执行逻辑。开发人员将是给您逻辑的另一个人。

如果你讨厌一种语言的某些特征,自然的趋势就是远离它。但是当你独自工作的时候,一切都是好的。如果有2+开发人员,您很可能会阅读并理解其他人所写的内容。如果代码做得很好,并且解决了手头的问题,那么您不能仅仅说不想使用它,因为您对查找文档缺乏兴趣。

编辑改变了最后一部分的知识。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23097484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档