我有一个包含可选的Map
的类:
private Optional<ImmutableMap<String, String>> stuff;
在我的类构造函数中,我传递了
Map<String, String> inputStuff
,其中inputStuff
可能是:null
空的
Map
填充的
Map
对于前两个实例,我需要存储
Optional.absent()
,对于第三个实例,我需要存储映射的Optional
不可变副本。就处理此问题而言,我能想到的最好的方法是: final ImmutableMap<String, String> tmp = ImmutableMap.copyOf(Objects.firstNonNull(inputStuff, ImmutableMap.<String, String>of()));
if (inputStuff.isEmpty())
{
this.stuff = Optional.absent();
}
else
{
this.stuff = Optional.of(inputStuff);
}
有没有更清洁的方法来解决这个问题?
最佳答案
为什么不简单地做:
if (inputStuff == null || inputStuff.isEmpty()) {
this.stuff = Optional.absent();
} else {
this.stuff = Optional.of(ImmutableMap.copyOf(inputStuff));
}
我看不到为什么要在这里创建一个临时变量的原因。如果您更喜欢使用三元运算符,甚至可以避免重复分配给
this.stuff
。