Java 在JDK7中,当将文件移动到有条件地使用REPLACE_EXISTING时,是否有方法使用三元运算符?

Java 在JDK7中,当将文件移动到有条件地使用REPLACE_EXISTING时,是否有方法使用三元运算符?,java,java-7,Java,Java 7,我不喜欢下面的代码,我想知道如何使用三元运算符: if (isIndexed) { Files.move(source, destination); } else { Files.move(source, destination, StandardCopyOption.REPLACE_EXISTING); } 我期待着这样的事情: Files.move(source, destination, isIndexed ? xxxx : StandardCopyOption.REPL

我不喜欢下面的代码,我想知道如何使用三元运算符:

if (isIndexed) {
    Files.move(source, destination);
}
else {
    Files.move(source, destination, StandardCopyOption.REPLACE_EXISTING);
}
我期待着这样的事情:

Files.move(source, destination, isIndexed ? xxxx : StandardCopyOption.REPLACE_EXISTING);
如果有某种“默认”复制选项我可以使用,我想这就是我想要的。但是StandardCopyOption的枚举没有“无”选项


所以我可能错过了什么。这是什么?

这是一个varargs参数,因此您可以通过
新建StandardCopyOption[0]
设置一个空数组

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

您只需要将条件的另一方面也设置为数组。您可以将其重构为两个(本地)常量以提高可读性。

在这种情况下,三元运算符会使代码更加混乱。像这样的问题让我怀疑,如果我同意Java,是否有三元运算符…+1,因为这是对该问题的一个很好的回答,但我仍然认为正常的if语句更清晰!在这种情况下,难道你不需要同时输出三元运算符数组吗?或者,编译器是否足够聪明,能够接受这一点?