Java 8-如何在不创建临时变量的情况下从List <T>和新T创建Iterable?

斯特凡·格兰隆(StéphaneGRILLON):

是否可以放置Iterable<? extends Module> modules而不创建临时变量ms并添加新元素?

List<Module> ms = new ArrayList<>(super.superModules);
ms.add(new newModule());
Injector injector = Guice.createInjector(super.stage, ms);

在父母中:

protected List<Module> superModules= new ArrayList<>(Arrays.asList(CucumberModules.createScenarioModule(), new aaaModule(), new bbbModule(), new cccModule()));

我的调用方法:

public static Injector createInjector(Stage stage, Iterable<? extends Module> modules) {
    return new InternalInjectorCreator().stage(stage).addModules(modules).build();
}
霍尔格:

由于该createInjector方法不需要List,因此您无需构造List您可以使用

Injector injector = Guice.createInjector(super.stage, () ->
    Stream.concat(super.superModules.stream(), Stream.of(new NewModule())).iterator());

Iterable是一个功能性的接口,作为其唯一的抽象方法是iterator(),它可以通过提供一种功能被满足Iterator需求。

有第三方库提供Iterator合成,因此您可以将其super.superModules.iterator()new NewModule()其他元素结合使用使用内置的工具,我们可以构造一个串联的流,并将其转换为迭代器。这仍然避免为组合的集合分配新的存储。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不违反MISRA规则的情况下将位域变量分配给uint8_t变量?

我如何在Java8中创建Json数组,并且仅在设置值的情况下才打印json?

如何在不创建对象的情况下将Java类转换为json格式结构

如何在不指定共享类型的情况下使用Box Java SDK创建共享链接?

如何在JAVA中不导入JButton的情况下创建按钮

如何在不创建变量的情况下使用 Javascript?

在Java 8中扩展List <T>

如何删除重复在列表<T> JAVA 8

如何在不创建临时字节切片的情况下从连接中读取 Go

如何在不创建表的情况下将动态查询的结果存储在临时表中?

如何在不创建临时对象的情况下遍历嵌套的TreeMap

java 8 stream groupBy和创建新对象

如何在不创建其他变量的情况下修复“创建一个在仍在使用时被释放的临时文件”?

如何在不创建另一个文件的情况下重命名文件(Java)

Java如何在不递归的情况下创建具有相同类型子对象的对象?

Java 8 List <T>到Map <T,(index)>

如何在不使用Java创建新实例的情况下引用GUI?

ansible 如何在没有“T”的情况下创建目录

Java 8扩展流<T>

Java 8 Optional <T>获得

Java泛型:如何在不使用原始类型的情况下强制转换为(T扩展Comparable <?super T>)

如何在不创建临时列的情况下从pandas数据框列计算最小值?

如何在不创建临时文件的情况下获取文件扩展名或文件类型的图标?

如何在不创建临时表的情况下将 SQL SERVER 中的行转换为列

如何在不创建临时文件的情况下打开存储在字符串/字节中的网页?

如何在不创建分组变量的情况下进行group_by?

C#如何在不创建实例的情况下访问变量?

如何在 Python 中不创建不同变量的情况下进行绘图

是否可以在不创建临时变量的情况下“传递”未命名的参数?