可以使用Guava Lists.transform或Iterables.transform转换器吗?

dje*_*lin 0 java functional-programming guava

通常Guava Lists.transform看起来像这样:

Lists.transform(new ArrayList<String>("1", "2", "3"),
    new Function<String, Integer>() {
      @Override
      Integer apply(String str) {
        return Integer.valueOf(str);
      }
    });
Run Code Online (Sandbox Code Playgroud)

一个Converter<A, B>定义doForward,并doBackward从去的方法ABBA分别.逻辑上它是一对Function.看起来没有任何简单的方法

  • 从a ConverterFunction描述它的那对,或者
  • 输入a Converter并向方法说出方向Lists.

这些是不兼容的还是除了手动编写胶水代码之外还有其他方法吗?

手动胶水代码看起来像

final Converter<A, B> myConverter = /*...*/;
Lists.transform(myList, new Function<A, B>() {
  @Override
  B apply(A a) {
    return myConverter.doForward(a);
  }
});
Run Code Online (Sandbox Code Playgroud)

shm*_*sel 5

番石榴的Converter工具Function.所以就这么做

Lists.transform(myList, myConverter)
Run Code Online (Sandbox Code Playgroud)

要么

Lists.transform(myList, myConverter.reverse())
Run Code Online (Sandbox Code Playgroud)