如何模拟多参数副作用函数

fom*_*mil 0 java guava

我想模仿以下界面:

interface MultiSideEffectFunction<T> {
    void action(T first, T second);
}
Run Code Online (Sandbox Code Playgroud)

(这将使我免于必须引入新的界面)

有没有一种首选的番石榴方法来做到这一点?

注意:我考虑过这样做

Function<Pair<T>, Void>
Run Code Online (Sandbox Code Playgroud)

但是有两个问题使得创建新界面更为可取:

  1. 我们必须定义一个名为类Pair<T>,它看起来很像一个Map.Entry<T, T>更合适的名称吸气剂(作为第二个问题:是否有这样的番石榴类型?).
  2. Void返回类型是永远的痛-这将是最好有一个真正的void签名.

Lou*_*man 5

番石榴贡献者在这里.

首选的Guava方法是编写自己的界面.

特别要注意不能使用Function; Function只应在功能没有副作用时使用.

番石榴故意缺乏Pair类型; 我们建议,只要你需要一对,你就可以创建自己的类,将有用的名称附加到两个值上,而不是完全没有信息的"第一"和"第二".(典型的例子是GPS坐标;一个名为的LatLong信息比一个信息更丰富Pair<Double, Double>.)