小编Osk*_*und的帖子

Java 供应商<> 定义为 lambda。需要帮助了解此代码甚至如何运行

抱歉,标题有点不清楚,但希望您很快就会看到想出更好的标题并不容易:)

所以我有这个接口,它通过定义一个新方法和一个 Supplier.get() 方法的默认实现来扩展 Java Supplier @FunctionalInterface。我的 .get() 的默认实现仅在某些异常处理中包装了对其他方法的调用。

然后在我的代码中,我使用 lambda 符号初始化了这个供应商的不同“版本”。前任:SomeSupplier s = () -> doSomething();

不知道为什么我什至尝试过这个,因为从逻辑上讲,我不明白这甚至是如何工作的。在我看来,当我像这样使用 lambda 定义我的供应商时,我实际上是在覆盖 Supplier.get() 方法。那么在实践中它是如何覆盖我的 SomeSupplier.getSome() 方法的呢?并保留 .get() 方法的默认实现?

我在这里缺少什么?


工作示例代码:


    public static void main(String[] args) throws InterruptedException {

        SomeSupplier s = () -> getSomeOrException(); // "implements" the Supplier.get(), right?

        for (int i = 0; i < 100; i++) {
            System.out.println(s.get()); // => "Some!" or "null"
            Thread.sleep(2);
        }
    }

    private static String getSomeOrException() throws SomeCheckedException {
        if (System.currentTimeMillis() % 10 == 0) …
Run Code Online (Sandbox Code Playgroud)

java lambda

1
推荐指数
1
解决办法
53
查看次数

标签 统计

java ×1

lambda ×1