java - 除非调用相应的方法,否则 Lambda 主体不会执行

标签 java lambda java-8

我正在学习 Java Lambda,我问自己,如果我想在这里使用 lambda,是否总是需要调用函数式接口(interface)的抽象方法?

@FunctionalInterface
public interface A {
    public void somefunction();
}

@FunctionalInterface
public interface B extends A {

}

public class testing {
    public static void main(String[] args) {
        B b = () -> System.out.println("MyText");

        b.somefunction();   //Why do I need to call somefunction()
    }
}

如果我不写 b.somefunction();,即使编译器没有给出错误,我也不会得到任何输出。

我没有向该方法传递任何值,那么为什么我需要调用抽象方法?

是否有办法跳过抽象方法调用?如果我的情况是添加或执行一些计算,那么我可以理解我需要在方法中传递一些值,但在上面的场景中我只是打印值.

最佳答案

如果您希望在程序运行时打印输出,请编写:

public class testing {
    public static void main(String[] args) {
        System.out.println("MyText");
    }
}

如果您希望在其他函数运行时打印输出,那么您可以使用 lambda:

class Testing {
    public static void main(String[] args) {
        runn(() -> System.out.println("MyText"), 10);
    }
    static runn(Runnable task, int times) {
        for (int i = 0; i < times; ++i) {
            task.run();
        }
    }
}

Lambda 的存在是为了让您可以轻松指定要委托(delegate)给另一个实体执行的函数。当调用 lambda 时,其参数及其结果的处理由其他人决定。

关于java - 除非调用相应的方法,否则 Lambda 主体不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54379762/

相关文章:

java - Spring JMS 监听器容器并发属性不起作用

java - 使线程以正确的方式工作

std::find_if 中的 C++ lambda 表达式?

c++ - 何时使用函数模板而不是通用 lambda?

java - 通过 map 流进行过滤并收集到单个列表中?

java - 使用 Lambda 表达式将字符串列表转换为 Java 中的自定义对象列表

java - Java 7 中 Java 8 的功能接口(interface)

java - 如何增加 JVM 堆大小

c# - Linq order by 没有订购任何东西

java - 如何从 LCDUI 表单启动 LWUIT 表单?