我有两个实现同一个接口的枚举,如下所示:
public interface System {
public String getConfigKey();
}
两个枚举类型SystemA和SystemB实现了这个接口。
public enum SystemA implements System {
ABC_CONFIG("ABC");
private SystemA(String configKey) {
this.configKey = configKey;
}
private String configKey;
public String getConfigKey() {
return configKey;
}
}
public enum SystemB implements System {
DEF_CONFIG("DEF");
private SystemB(String configKey) {
this.configKey = configKey;
}
private String configKey;
public String getConfigKey() {
return configKey;
}
}
我想要像这样通用地应用getConfigFunction:-
Set<String> configKeys = Stream.<System>of(SystemA.values(),
SystemB.values()).forEach(config -> config.getConfigKey()).collect(toSet());
但是它抛出了编译时错误,因为生成的流是类型为:Config []。
所以我尝试进行以下修改:
Set<String> configKeys = Stream.<System []>of(SystemA.values(),
SystemB.values()).forEach(config -> config.getConfigKey()).collect(toSet());
但这也失败了,因为我需要修改forEach部分。 请问有人可以帮忙吗?我该如何修改forEach部分?或者我应该如何使用map()/flatmap()函数,使得上述代码行可以正常工作。
谢谢。
.map(config -> config.getConfigKey())
而不是forEach
,因为forEach
是一个终止操作。 - Youcef LAIDANI.map(config -> config.getConfigKey())
不起作用,因为形成的流是 System [] * 类型,而不是 System* 类型。而 getConfigKey() 函数是针对 System* 的,而不是 System [] 的。 - Shivanshu