3

以下のコードがどのように見えるかが気に入らないので、三項演算子を使用してそれを行う方法を知りたいです。

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」オプションがありません。

だから私はおそらく何かが欠けています。それは何ですか?

4

1 に答える 1

6

これはvarargs引数なので、。で空の配列を設定できますnew StandardCopyOption[0]

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

条件のもう一方の手も配列にする必要があるだけです。読みやすさを向上させるために、2つの(ローカル)定数にリファクタリングすることができます。

于 2012-04-20T16:39:05.307 に答える