gpt4 book ai didi

java - 在 Java 8 中使用 lambda 表达式有什么优点?

转载 作者:太空狗 更新时间:2023-10-29 22:32:37 25 4
gpt4 key购买 nike

Interface AccountService{
public void createAccount();
}

AccountService accountServiceAnonymous = new AccountService(){
public void createAccount(){
Account account = new Account();
save(account);
}
};

AccountService accountServiceLambda = () -> {
Account account = new Account();
save(account);
}

除了减少代码行数之外,在 Java 8 中使用 lambda 表达式还有其他优势吗?

最佳答案

添加@Bilbo 在评论中提到的内容。在 Java 1.7 中发布了一个名为 invokedynamic 的新 JVM Opcode。 Java 8 Lambda 使用它。因此,以下代码将导致在编译代码时创建一个匿名类。可能 <ClassName>$1.class因此,如果您有 10 个匿名类,那么最终 jar 中还有 10 个类。

AccountService accountServiceAnonymous = new AccountService(){
public void createAccount(){
Account account = new Account();
save(account);
}
};

但是 Java 8 lambda 使用 invokedynamic因此,如果您有 10 个 lambda,则调用 lambda 不会产生任何匿名类,从而减少最终的 jar 大小。

AccountService accountServiceLambda = () -> {
Account account = new Account();
save(account);
}

关于java - 在 Java 8 中使用 lambda 表达式有什么优点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33492203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com