我有一个 Map<Enum, Object> myMap
我正在尝试使用 Java8 Optional
来简化这种情况.如果可能的话,你是怎么做到的?我的目标是分配 newVar
Enum2 newVar = Z;
if(myMap.containsKey(A))
newVar = X;
if(myMap.containsKey(B))
newVar = Y;
最佳答案
我想你有很多这样的分支(否则你的代码就足够简单了,不需要改变)。在这种情况下,最好创建一个预定义 map Map<Enum,Enum2>
:
// initialized once statically
Map<Enum,Enum2> enum2map = new LinkedHashMap<>();
enum2map.put(A, X);
enum2map.put(B, Y);
...
然后你可以通过下面的方式使用它(Optional
随便用):
Enum2 newVar = enum2map.entrySet().stream()
.filter(e -> myMap.containsKey(e.getKey()))
.findFirst()
.map(e -> e.getValue()).orElse(Z);
关于Java8 - 如何操作和分配变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31133412/