In Java 8, how to reference a method without parameters and return void?

I have a bunch of methods with this signature:

public void sideEffects() {...}
public void foo() {...}
public void bar() {...}

(that is, they return void and have no parameters) and I want to be able to populate the list by doing the following:

list.add(MyClass::sideEffects);
list.add(MyClass::foo);
list.add(MyClass::bar);

However, I can't use Java. Net that supports this signature util. The built-in @ functionalinterface. Was found in the function package Do I have to create my own @ functionalinterface for this?

Solution

In this case, Java Lang. runnable has the signature you are looking for and is @ functionalinterface You can use this for this purpose, but I'm not sure if it's a good thing or a bad thing

The code is as follows:

package com.sand@R_949_2419@;

import java.util.ArrayList;
import java.util.List;

public class Sand@R_949_2419@ {
    public static void main(String[] args) {
        List<Runnable> list = new ArrayList<>();
        list.add(Sand@R_949_2419@::sideEffects);
        list.add(Sand@R_949_2419@::foo);
        list.add(Sand@R_949_2419@::bar);

        for (Runnable runnable : list) {
            runnable.run();
        }
    }

    public static void sideEffects() {
        System.out.println("sideEffects");
    }

    public static void foo() {
        System.out.println("foo");
    }

    public static void bar() {
        System.out.println("bar");
    }

}
The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>