对于一个什么都不接受也不返回的方法,Java 8函数接口是什么?也就是说,它是否等同于C#无参数Action和void返回类型?
Action
void
aiqt4smr1#
如果我没理解错的话,你需要一个函数接口,方法是void m(),在这种情况下,你可以简单地使用Runnable。
void m()
Runnable
mbyulnm02#
你自己做吧
@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
bq3bfh9z3#
@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:::
3条答案
按热度按时间aiqt4smr1#
如果我没理解错的话,你需要一个函数接口,方法是
void m()
,在这种情况下,你可以简单地使用Runnable
。mbyulnm02#
你自己做吧
像这样使用它
并且输出
bq3bfh9z3#
@FunctionalInterface
只允许方法抽象方法因此,您可以使用lambda表达式示例化该接口,如下所示,并且可以访问接口成员输出: