我不喜欢下面的代码看起来如何,我想知道如何使用三元运算符来实现它:
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”选项。
所以我可能会遗漏一些东西。它是什么?
答案 0 :(得分:6)
这是一个varargs参数,所以你可以通过new StandardCopyOption[0]
设置一个空数组。
Files.move(source, destination, isIndexed ? new StandardCopyOption[0] : new StandardCopyOption[] { StandardCopyOption.REPLACE_EXISTING });
你只需要将条件的另一方面作为一个数组。您可以将它重构为两个(本地)常量,以提高可读性。