functional-interface相关内容

应该 'Comparable<T>'是一个“功能接口"?

函数式接口的定义是“函数式接口是只有一个抽象方法的接口(除了 Object 的方法),因此代表一个单一的函数契约." 根据这个定义,Comparable绝对是一个函数式接口. lambda 表达式的定义是“一个 lambda 表达式就像一个方法:它提供了一个形式参数列表和一个主体——一个表达式或块——用这些参数表示." 对 lambda 表达式的求值会生成一个函数式接口的实例. ..
发布时间:2021-12-31 14:37:23 Java开发

为什么 JDK 中所有符合条件的接口都没有使用 @FunctionalInterface?

Java 8 为我们提供了许多有趣的方法来使用函数式接口,并为我们提供了一个新的注释:@FunctionalInterface.它的工作是告诉编译器在我们没有遵守函数式接口的规则时对我们大喊大叫(请只提供一个需要重写的抽象方法). 有 带有此注释的 java.util.function 包中的 43 个接口.在 jdk.1.8.0/src 中搜索 @FunctionalInterface 只 ..

为什么 Java 8 中的函数式接口有一个抽象方法?

正如我们所知,在 Java 8 中引入了函数式接口的概念.一个函数式接口有一个 abstract 方法和几个默认或静态方法是可能的. 但是为什么一个函数式接口应该只有一个抽象方法呢?如果接口有多个抽象方法,为什么这不是功能接口? 解决方案 引入了函数式接口,也称为单一抽象方法接口,以简化 Lambda 函数.由于 lambda 函数只能提供 1 个方法的实现,因此函数式接口必须只有一 ..
发布时间:2021-12-28 08:45:36 Java开发

Java 8 供应商在构造函数中带有参数

为什么供应商只支持无参数构造函数? 如果存在默认构造函数,我可以这样做: create(Foo::new) 但是如果唯一的构造函数接受一个字符串,我必须这样做: create(() -> new Foo("hello")) 解决方案 这只是方法引用语法的一个限制——您不能传入任何参数.这就是语法的工作原理. ..

为什么我需要一个函数式接口来使用 lambdas?

我认为这个问题已经在某个地方了,但我找不到. 我不明白,为什么有必要使用函数式接口来处理 lambda.考虑以下示例: 公共类测试{公共静态无效主(字符串...参数){测试接口 i = () ->System.out.println("汉斯");//i = (String a) ->System.out.println(a);i.hans();//i.hans("你好");}}公共接口测试 ..
发布时间:2021-12-23 21:52:13 Java开发

“功能接口"的精确定义在 Java 8 中

最近我开始探索 Java 8,我不太明白“函数式接口"的概念,它对 Java 的 lambda 表达式的实现至关重要.有一个非常全面的指南,介绍了 Java 中的 lambda 函数,但我陷入了 定义函数式接口概念的章节.定义如下: 更准确地说,函数式接口被定义为任何只有一个抽象方法的接口. 然后他继续示例,其中之一是 Comparator 接口: 公共接口比较器{int比较(T o ..
发布时间:2021-11-26 16:09:17 Java开发

“功能接口"的精确定义在 Java 8 中

最近我开始探索 Java 8,我不太明白“函数式接口"的概念,它对 Java 的 lambda 表达式的实现至关重要.有一个非常全面的指南,介绍了 Java 中的 lambda 函数,但我陷入了 定义函数式接口概念的章节.定义如下: 更准确地说,函数式接口被定义为任何只有一个抽象方法的接口. 然后他继续示例,其中之一是 Comparator 接口: 公共接口比较器{int比较(T o ..
发布时间:2021-11-25 18:18:20 Java开发

Java 8 中使用的函数式接口是什么?

我在 Java 8 中遇到了一个新术语:“函数式接口".在使用 lambda 表达式 时,我只能找到它的一种用法. Java 8 提供了一些内置的函数式接口,如果我们想定义任何函数式接口,那么我们可以使用 @FunctionalInterface 注释.它将允许我们在接口中只声明一个方法. 例如: @FunctionalInterface接口 MathOperation {int 操 ..
发布时间:2021-11-25 12:38:21 Java开发

“功能接口"的精确定义在 Java 8 中

最近我开始探索 Java 8,我不太明白“函数式接口"的概念,它对 Java 的 lambda 表达式的实现至关重要.有一个非常全面的指南,介绍了 Java 中的 lambda 函数,但我陷入了 定义函数式接口概念的章节.定义如下: 更准确地说,函数式接口被定义为任何只有一个抽象方法的接口. 然后他继续示例,其中之一是 Comparator 接口: 公共接口比较器{int比较(T o ..
发布时间:2021-11-25 08:42:06 Java开发

如果我们可以简单地在其位置传递一个常规的 Lambda 表达式,那么 Vaadin 8 中定义的 `SerializableFunction` 接口有什么目的?

Vaadin 8 定义了一个 功能接口,SerializableFunction. 这个界面出现在各个地方.例如,当定义一个 Converter 用于在 TextField 例如 UUID. Binder.BindingBuilder::withConverter(SerializableFunction toModel, SerializableFunction toPresentati ..
发布时间:2021-09-11 20:17:32 其他开发

在Java中实现适当的C#事件(非委托)

此 SO答案以及同一问题中的其他帖子中已经提到,可以使用接口实现C#委托或Java FuncationInterfaces. 但是,我希望在Java中实现适当的事件模型,而不是委托模型.有关两者的区别的简要介绍,请参见此.尤其是第一条评论. 以下是我到目前为止尝试过的内容: Event.java public class Event { public interfa ..
发布时间:2021-02-15 21:18:17 Java开发

通过方法参考了解编译时错误

根据文档,方法参考绝对不是静态调用.它适用于静态和非静态方法. 当我们在给定的类中定义自己的非静态方法并尝试使用“方法引用"使用它时,在Function情况下看不到编译时错误“无法对非静态方法进行静态引用",而在情况下才看到供应商,消费者和谓词.为什么会这样? class Demo{ private Function p= Student::get ..
发布时间:2021-02-10 18:59:27 Java开发

当传递函数类型参数而不是Consumer时,为什么Java中的for-each方法不会引发异常?

为什么不 forEach 方法不会显示编译器错误?这两行都为流中的每个元素都返回一个布尔值,但是只有第二行会出现编译错误?在这种情况下, lambda表达式是否还有其他属性? 这是我的代码: Stream.of(1,2,3,4).forEach(a->a.equals(1));//line 1 Stream.of(1,2,3,4).forEach(a->{return a.equal ..
发布时间:2020-08-01 22:20:27 Java开发