加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

在Java 8中,如何对不带参数的方法进行方法引用并返回void?

发布时间:2020-12-15 04:19:28 所属栏目:Java 来源:网络整理
导读:我有一堆带有此签名的方法: public void sideEffects() {...}public void foo() {...}public void bar() {...} (也就是说,它们返回void并且没有参数)并且我希望能够通过执行以下操作来填充List: list.add(MyClass::sideEffects);list.add(MyClass::foo);li
我有一堆带有此签名的方法:

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

(也就是说,它们返回void并且没有参数)并且我希望能够通过执行以下操作来填充List:

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

但是,我无法在支持此签名的java.util.function包中找到内置的@FunctionalInterface.我是否必须为此创建自己的@FunctionalInterface?

解决方法

在这种情况下,java.lang.Runnable具有您正在寻找的签名,并且是@FunctionalInterface.您可以将此用于此目的,但我不确定这是好事还是坏事.

代码如下所示:

package com.sandbox;

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

public class Sandbox {
    public static void main(String[] args) {
        List<Runnable> list = new ArrayList<>();
        list.add(Sandbox::sideEffects);
        list.add(Sandbox::foo);
        list.add(Sandbox::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");
    }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读