static vs default方法 - 功能接口

时间:2017-11-27 06:22:55

标签: java-8 functional-programming

我正在创建功能接口,并希望使用匿名实现重用默认方法。

public class JavaInterfaceTest {

public static void main(String[] args) {

    FunctionalIntf fi = () -> {
        System.out.println("In ananymus impl, trying to call default method");
        // doInternal()
        return "Hello";

    };

    fi.doFunction(); // How this line valid ?
    fi.doInternal();

    FunctionalIntf.doSomething();

    }

}

@FunctionalInterface
interface FunctionalIntf {

String doFunction();

default void doInternal(){
    System.out.println("In doInternal");
}

static void doSomething(){
    System.out.println("In doSomething");
}

}
  1. fi.doFunction();如果我通过匿名实施,则有效。
  2. 如果我想要实施,我如何重新起诉默认方法或静态方法?
  3. 第3。在我的情况下返回一些有效/最佳实践,因为我无法处理返回的值。

1 个答案:

答案 0 :(得分:0)

实现功能界面时,您有两个选项:

  1. 使用lambdas,就像你一样
  2. 使用内部类。
  3. 如果你使用lambda,就像你一样,你有静态/默认方法的默认实现以及抽象方法的实现。

    如果使用内部类,则适用正常的覆盖规则。