51得票1回答
使用带有参数的方法引用

我刚开始学习Java流并遇到了一个问题。请看下面的例子,代码是Node类的一部分:private Map<String, Node> nodes; public Optional<Node> child(String name) { return Option...

11得票3回答
如何在Java函数中适当地组合Predicate和Function?

创建一个新的Predicate,可在流过滤器中使用。 myCollectionOfElement .stream() .filter( MyStaticHelperClass.compose(MyStaticHelperClass.getSubElement1OfTheElement...

7得票1回答
持有Runnable实现的函数

我有这段代码: new Thread(() -> { //do things }).start(); new Thread(() -> { //do same things }).start(); 我知道我可以声明一个包含lambda的函数: Fu...

42得票2回答
当Comparator有两个抽象方法时,它如何成为一个函数式接口?

在Java 8中,引入了@FunctionalInterface注解,用于表示只有一个抽象方法的任何接口均为函数式接口。引入该注解的原因之一是向用户(程序员)指示,可以在函数式接口上下文中使用Lambda表达式。 Comparator 接口被注解为@FunctionalInterface,但...

13得票1回答
将Comparable的实例传递给期望Comparator的方法

Java 8 中的 Stream 类定义了一个需要 Comparator 参数的 max 方法。以下是该方法的签名: Optional<T> max(Comparator<? super T> comparator) Comparator是一个函数式接口,它有一个...

17得票2回答
Java lambda 只能抛出表达式式的异常而非语句式的异常

在Java中(目前使用的是Java 8),我可以这样编写代码,所有内容都会编译得很好: Supplier<Long> asd = () -> { throw new RuntimeException(); }; 但是,我无法写出这样的代码: Supplier&...

110得票8回答
Java 8构造函数带参数的供应者(Supplier)

为什么供应商只支持无参构造函数? 如果有默认构造函数,我可以这样做:create(Foo::new) 但是如果唯一的构造函数接受一个字符串参数,我必须这样做:create(() -> new Foo("hello"))

11得票4回答
意外的Java函数式接口转换

我有下面这段使用Java函数式接口的代码,它能够编译通过,但是不清楚为什么会编译通过: public class App { public static void main(String[] args) throws Exception { final Recor...

7得票3回答
我应该使用哪个FunctionalInterface?

我正在学习如何将一些lambda表达式表示为FunctionalInterface。因此,为了将两个整数相加,我使用了以下代码: BiFunction<Integer, Integer, Integer> biFunction = (a, b) -> a + b; Syst...

41得票4回答
为什么Java 8中的函数式接口只有一个抽象方法?

正如我们所了解的,在Java 8中,引入了函数式接口的概念。函数式接口有一个abstract方法,同时也可以拥有多个默认方法或静态方法。 但是为什么函数式接口只能有一个抽象方法呢?如果接口有多个抽象方法,为什么它就不能成为函数式接口呢?