在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"); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |