【发布时间】:2020-07-17 11:37:45
【问题描述】:
我正在阅读有关 Java 8 的 this article 并有以下问题/cmets 我希望得到一些反馈/回复。
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 中的另一个函数吗?我是否需要做一些特别的事情来完成这项工作,或者我可以只编写对象和方法的定义,然后将对象作为参数传递给方法?
【问题讨论】:
-
(1) 就像在大多数情况下documentation 持有答案:“但是,编译器会将满足功能接口定义的任何接口视为功能接口无论是否接口声明中存在一个 FunctionalInterface 注释。"
-
谢谢——我也是这么想的,但我一定是错过了。您能否对其他问题发表评论?
-
抱歉,我现在很忙。顺便说一句,你应该ask one question per post。
-
感谢您的帮助 - 我觉得它们是相关的概念,并且有点小且有条件,所以我想我只是将它们结合起来
-
我会声明 Java 中没有函数。只有方法——无论是静态的还是非静态的——,还有接口
Function。
标签: java lambda java-8 functional-programming higher-order-functions