我正在学习 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/