我正在尝试将List<enum>
转换为List<String>
并将其设置在某处。另外,枚举列表有时可以为NULL。我尝试使用Optional类。
如果我尝试使用Streams,它会起作用。但是,我必须在转换前后进行空检查。
示例代码:
枚举:
enum A {
VALUE1,VALUE2;
}
业务逻辑:
List<A> list = new ArrayList<>();
list.add(A.VALUE1);
list.add(A.VALUE2);
BaseClass obj = new BaseClass();
ChildClass obj1 = new ChildClass();
obj1.setList(list);
obj.setChildClass(obj1);
转换逻辑:
List<String> newList = Optional.ofNullable(obj.getChildClass())
.map(ChildClass::list). //TO-DO.. Logic to convert enum to string
.orElse(null);
if(newList!=null){
new Object().setNewList(newList);
}
怎么样:
List<A> list = new ArrayList<>();
list.add(A.VALUE1);
list.add(A.VALUE2);
list.add(null);
List<String> collect = list.stream().map(Optional::ofNullable) //Stream<Optional<..>>
.map(opt -> opt.orElse(null)) //Stream<A>
.map(Objects::toString) //Stream<String>
.collect(Collectors.toList());