在JDK7中,有没有办法在移动文件时使用三元运算符来有条件地使用REPLACE_EXISTING?

Rob*_*ish 3 java java-7

我不喜欢下面的代码看起来如何,我想知道如何使用三元运算符来做到这一点:

if (isIndexed) {
    Files.move(source, destination);
}
else {
    Files.move(source, destination, StandardCopyOption.REPLACE_EXISTING);
}
Run Code Online (Sandbox Code Playgroud)

我期待的东西看起来像:

Files.move(source, destination, isIndexed ? xxxx : StandardCopyOption.REPLACE_EXISTING);
Run Code Online (Sandbox Code Playgroud)

如果我可以使用某种"默认"复制选项,我认为这将是我正在寻找的.但是StandardCopyOption的枚举没有"NONE"选项.

所以我可能错过了一些东西.它是什么?

Bal*_*usC 6

这是一个varargs参数,所以你可以设置一个空数组new StandardCopyOption[0].

Files.move(source, destination, isIndexed ? new StandardCopyOption[0] : new StandardCopyOption[] { StandardCopyOption.REPLACE_EXISTING });
Run Code Online (Sandbox Code Playgroud)

你只需要将条件的另一只手放在一个数组中.您可以将它重构为两个(本地)常量以提高可读性.

  • +1,因为这是一个很好的答案,但我仍然认为正常的if语句更清晰! (2认同)