我不喜欢以下代码的外观,并且想知道如何使用三元运算符来做到这一点:
if (isIndexed) {
Files.move(source, destination);
}
else {
Files.move(source, destination, StandardCopyOption.REPLACE_EXISTING);
}
我期望看起来像这样:
Files.move(source, destination, isIndexed ? xxxx : StandardCopyOption.REPLACE_EXISTING);
如果我可以使用某种“默认”复制选项,我想这就是我想要的。但是StandardCopyOption的枚举没有“NONE”选项。
所以我可能会丢失一些东西。它是什么?
最佳答案
这是一个varargs参数,因此您可以通过new StandardCopyOption[0]
设置一个空数组。
Files.move(source, destination, isIndexed ? new StandardCopyOption[0] : new StandardCopyOption[] { StandardCopyOption.REPLACE_EXISTING });
您只需要使条件的另一只手成为数组。您可以将其重构为两个(局部)常量以提高可读性。