Ich denke, dass es besser wäre, ein eigenes Interface zu verwenden, etwa so:
%Vor% Guavas Function
ist eine einzelne Argumentfunktion und nicht wirklich geeignet für irgendetwas Multi-Argument.
Eine andere Sache, mit der ich experimentiert habe, ist eine ReduceFunction<F, T>
, die zufällig für so etwas geeignet ist. Es wird für die Operation reduce
oder fold
verwendet und sieht ungefähr so aus:
Damit können Sie Dinge wie
tun %Vor% wo MathOps.add()
ein ReduceFunction<Double, Double>
ist, das das Offensichtliche tut.
Es sieht so aus, als ob Sie nach einer Entsprechung zu c # 's Func suchen: Spezialisiert auf Ihren Fall mit den args und Rückgabewert des gleichen Typs.
Es gibt zwei andere Fragen mit guten Antworten dazu ..
Wie einige andere Antworten andeuten, könnten Sie hier in der Mitte zwischen zwei Paradigmen stecken (OO und funktional), etwas, mit dem Sprachdesign wohl schneller aufholt als gute Praxis. Wenn Sie mit diesem trüben Wasser weitermachen möchten, können Sie functionaljava ausprobieren.
Siehe Objekt-orientierte und funktionale Programmierung mischen für weitere interessante Diskussionen.