对于一个不接受任何东西也不返回任何东西的方法,Java8函数接口是什么?
也就是说,相当于具有 void返回类型的 C # 无参数 Action?
void
Action
如果我理解正确的话,您想要一个具有 void m()方法的函数式接口。在这种情况下,您可以简单地使用 Runnable。
void m()
Runnable
自己做吧
@FunctionalInterface public interface Procedure { void run(); default Procedure andThen(Procedure after){ return () -> { this.run(); after.run(); }; } default Procedure compose(Procedure before){ return () -> { before.run(); this.run(); }; } }
像这样使用它
public static void main(String[] args){ Procedure procedure1 = () -> System.out.print("Hello"); Procedure procedure2 = () -> System.out.print("World"); procedure1.andThen(procedure2).run(); System.out.println(); procedure1.compose(procedure2).run(); }
和输出
HelloWorld WorldHello
@FunctionalInterface只允许方法抽象方法,因此您可以使用下面的 lambda 表达式实例化该接口,并且可以访问接口成员
@FunctionalInterface
@FunctionalInterface interface Hai { void m2(); static void m1() { System.out.println("i m1 method:::"); } default void log(String str) { System.out.println("i am log method:::" + str); } } public class Hello { public static void main(String[] args) { Hai hai = () -> {}; hai.log("lets do it."); Hai.m1(); } }
产出:
i am log method:::lets do it. i m1 method:::