配列の分岐と配列でない分岐が混在した三項演算子を使用している可変長引数メソッドを報告します。

コンパイル時には両方の分岐が配列にラップされます。 その結果、配列の分岐は二次元配列になってしまうため、問題が発生する可能性があります。

このクイックフィックスは配列でない分岐を配列にラップし、コンパイラーがこのような変換を行わないようにします。

例:


    static void bar(boolean flag) {
        Object[] a = {1, 2};
        Object b = "hello";
        foo(flag ? a : b);
    }
    static void foo(Object... obj) {
    }

クイックフィックス適用後:


    static void bar(boolean flag) {
        Object[] a = {1, 2};
        Object b = "hello";
        foo(flag ? a : new Object[]{b});
    }
    static void foo(Object... obj) {
    }

2020.3 の新機能です