我不喜欢以下代码的外观,并且想知道如何使用三元运算符来做到这一点:

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 });

您只需要使条件的另一只手成为数组。您可以将其重构为两个(局部)常量以提高可读性。

10-04 18:19