所以,我需要使用像
这样的API函数interface BiFunction<A, B> {
B aToB(A input);
A bToA(B input);
}
Guava是否提供了这样的smt。如果不是,您建议使用aToB
/ bToA
方法的名称?
答案 0 :(得分:6)
不,目前在番石榴中没有这样的东西。类似的内容可能即将到来(请参阅this issue,以及this issue进行相关讨论。)
对于姓名,我不知道什么是最好的,但我更喜欢apply
和applyInverse
而不是aToB
和bToA
。
答案 1 :(得分:4)
截至2014年底,Guava 19.0拥有它:
https://google.github.io/guava/releases/19.0/api/docs/com/google/common/base/Converter.html
B b = Converter.convert(a);
A a = Converter.reverse().convert(b);
您需要实施这些方法:
protected abstract A doBackward(B b)
protected abstract B doForward(A a)
答案 2 :(得分:2)
至于建议的名称,这取决于你想要的通用程度。一些现有的例子是:
interface Codec <I, O> {
public O encode(I in);
public I decode(O out);
}
interface Format <R, F> {
public F format(R raw);
public R parse(F formatted);
}
如果您希望它是超级通用的,我会按照您的建议使用aToB
和bToA
。不要因为你使用Generics而使它们超载,并且不使用toA
,因为你没有转换函数本身,你正在转换一个参数。