Java 从接口方法返回一个或多个值的好方法

Java 从接口方法返回一个或多个值的好方法,java,Java,我有以下界面: @FunctionalInterface interface Mapper<I, O> { Collection<O> map(I in); } @functioninterface 接口映射器{ 藏品图(I英寸); } 计划这样使用: class Writer<E> { private final Iterator<?> it; private final Mapper<?, E> mapper

我有以下界面:

@FunctionalInterface
interface Mapper<I, O> {
   Collection<O> map(I in);
}
@functioninterface
接口映射器{
藏品图(I英寸);
}
计划这样使用:

class Writer<E> {

   private final Iterator<?> it;
   private final Mapper<?, E> mapper;
   private final Output<E> out;

   public <T> Writer(Iterator<T> it, Mapper<T, E> mapper, Output<E> out) {
      this.it = it;
      this.mapper = mapper;
      this.out = out;
   }

   void write() {
      while (it.hasNext()) {
         Collection<E> items = mapper.map(it.next());
         for (E item : items) {
            out.write(item);
         }
      }
   }

}
类编写器{
私有最终迭代器;

private final Mapper为希望使用单个值而不是集合的用户建议另一个类/构造函数。调查工厂方法是否比告诉用户直接调用构造函数更易于使用。此外,由于Writer的每个实例显然只是一次使用,请查看您是否不能将其替换为仅使用一次一个静态方法。或者几个静态方法。对于一般情况,您的代码很好,对于单个值的情况,您需要的是方便的方法。可以向
Writer
添加一个构造函数或静态工厂方法,该方法接受单个字符串并处理混乱,例如
static void write之类的内容(T值,映射器映射器,…{List List=List.of(值);Writer w=newwriter(List.iterator(),str->Collections.singletonList(str);…}
当用户希望使用单个值而不是集合时,建议另一个类/构造函数。调查工厂方法是否比告诉用户直接调用构造函数更易于使用。此外,由于Writer的每个实例显然只是一次使用,请查看是否不能仅用静态方法替换它hod。或几种静态方法。对于一般情况,您的代码很好,对于单个值的情况,您需要的是方便的方法。可以向
Writer
添加一个构造函数或静态工厂方法,该方法接受单个字符串并处理混乱,例如类似于
静态无效写入(T值、映射器映射器,…){List List=List.of(value);Writer w=newwriter(List.iterator(),str->Collections.singletonList(str);…}
List<String> strings = Arrays.asList("a", "b", "c");
Writer<String> writer = new Writer<>(
   strings.iterator(),
   str -> Collections.singletonList(str),
   new FileOutput(...));