java - 了解 Java 8 Lambda 表达式
问题描述
我正在阅读有关 Java 8 的这篇文章,并有以下问题/意见,我将不胜感激一些反馈/回应。
1)@FunctionalInterface
以下代码是否需要声明?或者是否可以在没有它的情况下执行相同的代码并且它是出于文档目的?从文章中是否有必要尚不清楚。
@FunctionalInterface
private interface DTOSender {
void send(String accountId, DTO dto);
}
void sendDTO(BisnessModel object, DTOSender dtoSender) {
//some logic for sending...
...
dtoSender.send(id, dto);
...
}
2) 一般来说,一个函数可以作为参数传递给 Java 8 中的另一个函数吗?我的理解是只有数据类型可以作为参数传递给函数,所以我认为这是不可能的,因为函数不是数据类型。
3)我是否需要做任何特别的事情来完成上面的#2,或者我可以只写我对这两种方法的定义,然后将一种方法作为参数传递给另一种方法?
4) 对象可以作为参数传递给 Java 8 中的另一个函数吗?我是否需要做一些特别的事情来完成这项工作,或者我可以只编写对象和方法的定义,然后将对象作为参数传递给方法?
解决方案
@Functional Interface
只是一个提示,这样您就不会在界面中添加更多方法。它可以。许多方法
Stream
将函数作为参数:Stream.of(1, 2, 3).forEach(System.out::println)
.Lambda 是一个函数实例:
Function<Integer, Integer> f = a -> a + 1
. 编辑:您可以使用方法引用按名称传递函数(参见 2.,println
是常规方法)。我不完全明白这个问题。如果该方法使用任何非原始参数,则它需要一个对象(Java 中除了原始对象之外的所有内容都是一个对象)。
推荐阅读
- php - 通过 cronjob 运行时,file_put_contents 不起作用
- javascript - 允许用户输入 discord.js 嵌入
- grep - 为什么 grep -o 添加空行?
- r - 如何根据 R 中的每日收益计算历史月度波动率?
- list - 如何在不重建整个列表的情况下更新列表项
- r - 求解 R 函数的输入值
- swift - UILabel 上的新行与自动换行混淆
- html - 如何在烧瓶模板中有单独的 for 循环(在单独的列中)?
- javascript - 每次更改表单中的字段时,Forkim 的 innerRef 都会更新
- c++ - 在 C++ 中拖尾一个 gzip 文件