배열과 비 배열 브랜치가 혼합된 3항 연산자를 사용하는 vararg 메서드 호출을 보고합니다.

완료 시 두 개의 브랜치가 배열에 래핑됩니다. 그 결과 배열 브랜치는 2차원 배열로 전환되며 문제가 발생할 가능성이 있습니다.

빠른 수정은 비 배열 브랜치를 배열에 래핑하여, 컴파일러가 변환하지 못하도록 방지합니다.

예:


    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의 새로운 기능