Java:参数化的Runnable

msc*_*yna 16 java generics callable

标准Runnable接口只有非参数化run()方法.还有通用类型返回结果的方法Callable<V>接口call().我需要传递泛型参数,如下所示:

interface MyRunnable<E> {
  public abstract void run(E reference);
}
Run Code Online (Sandbox Code Playgroud) 是否有任何标准接口用于此目的,或者我必须自己声明基本接口?

Ada*_*ski 13

通常,您将实现RunnableCallable作为支持genertic输入参数的类; 例如

public class MyRunnable<T> implements Runnable {
  private final T t;

  public MyRunnable(T t) {
    this.t = t;
  }

  public void run() {
    // Reference t.
  }
}
Run Code Online (Sandbox Code Playgroud)


fin*_*nnw 9

也有com.google.common.base.Function<F, T>来自谷歌集合番石榴.

如果将输出类型设置为?Void(并始终使其返回null),则可以将其用作Runnable输入参数的替代方法.

这具有能够用于Functions.compose转换输入值,Iterables.transform将其应用于集合的每个元素等的优点.


and*_*otn 8

Java 8包含java.util.function.Consumer<T>具有单个非默认方法的接口void accept(T t).

该包中还有许多其他相关接口.