我正在学习Java Lambda,我问自己是否要在这里使用lambda,总是需要调用函数接口的抽象方法吗?
@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();
,即使编译器没有给出错误,我也不会得到任何输出。
我没有向该方法传递任何值,所以为什么需要调用抽象方法?
总有没有跳过抽象方法的调用吗?如果我的情况是添加或执行一些计算,那么我可以理解,我需要在方法中传递一些值,但是在上述情况下,我只是打印该值
答案 0 :(得分:3)
如果要在程序运行时打印输出,请输入:
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可以简化指定要委托其执行到另一个实体的函数。调用lambda时,其参数及其结果的处理方式取决于其他人。
答案 1 :(得分:2)
功能界面可提供一种方式
通常,您会像定义的那样定义一个“ lambda对象”,然后将其传递到其他地方以告知在特定情况下该怎么做。如果您希望以这种方式看到它,那是一种回调。
传递该对象的实体会在有时间的时候调用/使用它,或者您可以自己使用它,如您在示例中所做的那样。