在Java中转换类型

par*_*rsa 5 java generics types iterator

Java noob在这里,

我有一个Iterator<TypeA>我想转换成的Iterator<TypeB>.TypeA和TypeB不能直接相互转换,但我可以写一个规则如何转换它们.我怎么能做到这一点?我应该扩展和覆盖Iterator<TypeA>下一个,hasNext和删除方法吗?

谢谢.

Gar*_*ryF 15

你不需要自己写这个.Guava(以前的Google收藏)让你了解Iterators.transform(...)

您提供了迭代器和将TypeA转换为TypeB的函数,您就完成了.

Iterator<TypeA> iterA = ....;
Iterator<TypeB> iterB = Iterators.transform(iterA, new Function<TypeA, TypeB>() {
   @Override
   public TypeB apply(TypeA input) {
     TypeB output = ...;// rules to create TypeB from TypeA
     return output;
   }
});
Run Code Online (Sandbox Code Playgroud)


Bor*_*vić 7

写一个适配器.这是Java中的一个例子.OReilly的书"Head First:Design Patterns"给出了关于该主题的最佳解释.