没有参数和返回值的Java 8函数接口

iovurdzv  于 2023-01-19  发布在  Java
关注(0)|答案(3)|浏览(364)

对于一个什么都不接受也不返回的方法,Java 8函数接口是什么?
也就是说,它是否等同于C#无参数Actionvoid返回类型?

aiqt4smr

aiqt4smr1#

如果我没理解错的话,你需要一个函数接口,方法是void m(),在这种情况下,你可以简单地使用Runnable

mbyulnm0

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
bq3bfh9z

bq3bfh9z3#

@FunctionalInterface只允许方法抽象方法因此,您可以使用lambda表达式示例化该接口,如下所示,并且可以访问接口成员

@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:::

相关问题