189得票11回答
Java 8中的函数式接口有什么用途?

我在Java 8中发现了一个新术语:“函数接口”。在使用lambda表达式时,我只找到了一个用法。 Java 8提供了一些内置的函数接口,如果我们想要定义任何函数接口,则可以使用@FunctionalInterface注释。它将允许我们在接口中仅声明单个方法。 例如:@FunctionalIn...

136得票7回答
何时以及为什么要使用Java的Supplier和Consumer接口?

作为非Java程序员学习Java,我正在阅读有关“Supplier”和“Consumer”接口的内容。我目前无法理解它们的用途和意义。 何时以及为什么要使用这些接口?有人能给我一个简单易懂的例子吗? 我发现文档示例对我的理解不够简洁。

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

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

78得票9回答
Java 8中“功能接口”的精确定义

最近我开始探索Java 8,但我无法完全理解“函数接口”的概念,这对于Java实现lambda表达式至关重要。虽然有一份Java lambda函数的非常全面的指南,但我卡在了定义函数接口概念的章节上。定义如下: 更准确地说,函数接口被定义为仅具有一个抽象方法的任何接口。 然后他举了例子...

61得票2回答
在lambda的无限while循环中使用Thread.sleep不需要'catch (InterruptedException)' - 为什么?

我的问题是关于InterruptedException,它是从Thread.sleep方法中抛出的。在使用ExecutorService时,我注意到了一些我不理解的奇怪行为;这就是我的意思:ExecutorService executor = Executors.newSingleThread...

55得票9回答
在Java 8中,我们什么时候应该使用Supplier?

这段代码有什么不同之处?Supplier<LocalDate> s1 = LocalDate::now; LocalDate s2 = LocalDate.now(); System.out.println(s1.get()); //2016-10-25 System.out.p...

53得票1回答
类似于Predicate的Java接口,但不带参数

我正在寻找一个类似于Predicate的预先存在的函数接口,但其test方法不带任何参数。

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

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

49得票6回答
有可能声明一个Supplier<T>需要抛出异常吗?

我正在尝试重构以下代码: /** * Returns the duration from the config file. * * @return The duration. */ private Duration durationFromConfig() { try {...

47得票5回答
为什么当Lambda表达式抛出运行时异常时,它的重载类型会改变?

请耐心看完,介绍有点冗长,但这是一个有趣的难题。 我有这段代码: public class Testcase { public static void main(String[] args){ EventQueue queue = new EventQueue();...