Dan*_*lan 3 java java-8 method-reference
我有一堆带有此签名的方法:
public void sideEffects() {...}
public void foo() {...}
public void bar() {...}
Run Code Online (Sandbox Code Playgroud)
(也就是说,它们返回void并且没有参数)并且我希望能够通过执行以下操作来填充List:
list.add(MyClass::sideEffects);
list.add(MyClass::foo);
list.add(MyClass::bar);
Run Code Online (Sandbox Code Playgroud)
但是,我无法在支持此签名@FunctionalInterface的java.util.function包中找到内置的.我是否必须为此创建自己@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");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
708 次 |
| 最近记录: |