番石榴有双向功能吗?
所以,我需要的功能与API像番石榴有双向功能吗?
interface BiFunction<A, B> {
B aToB(A input);
A bToA(B input);
}
是否番石榴提供SMT这样。如果不是,你会建议什么名字为aToB
/bToA
方法?
不,目前在番石榴中没有这样的东西。像这样的东西可能会来(见this issue,以及this issue一些相关的讨论)。
对于名字,我不知道什么是最好的,但我更喜欢像apply
和applyInverse
超过aToB
和bToA
。
至于建议的名称,它取决于你想要去的通用程度。一些现有的例子是:
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
如你所说。不要因为使用泛型而使它们重载,并且不要使用toA
,因为您不是在转换函数本身,而是在转换参数。
截至2014年年底,番石榴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)
Guava已经迁移到github上面的链接不再有效。以下是新链接: https://google.github.io/guava/releases/19.0/api/docs/com/google/common/base/Converter.html – Drew 2016-06-15 15:54:27
是的,我可以用两个不同的函数用于此目的。 – 2011-03-25 17:45:53