Java 8 functional interface with no arguments and no return value

后端 未结 3 684
心在旅途
心在旅途 2020-12-08 18:00

What is the Java 8 functional interface for a method that takes nothing and returns nothing?

I.e., the equivalent to to the C# parameterless Action wit

相关标签:
3条回答
  • 2020-12-08 18:28

    @FunctionalInterface allows only method abstract method Hence you can instantiate that interface with lambda expression as below and you can access the interface members

            @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();
    
            }
        }
    
    
    output:
    i am log method:::lets do it.
    i m1 method:::
    
    0 讨论(0)
  • 2020-12-08 18:32

    Just make your own

    @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();
            };
        }
    }
    

    and use it like this

    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();
    
    }
    

    and the output

    HelloWorld
    WorldHello
    
    0 讨论(0)
  • 2020-12-08 18:39

    If I understand correctly you want a functional interface with a method void m(). In which case you can simply use a Runnable.

    0 讨论(0)
提交回复
热议问题