본문 바로가기

Dev./Error.

[Error] incompatible types: Object[] cannot be converted to String[]

728x90
반응형

ArrayList<String> 타입을 String[] 배열로 변환해 리턴하는 과정해서 발생했다.

 

import java.util.*;

class Solution {
    public String[] solution(String[] strArr) {
        ArrayList<String> answer = new ArrayList<>();
        for (String str : strArr) {
            if (!str.contains("ab")) {
                answer.add(str);
            }
        }
        // !!문제 구간!! ArrayList -> String 배열 변환
        String[] str_arr = answer.toArray();
        return str_arr;
    }
}
  • toArray()  반환 타입은 Object[] 그런데 왼쪽 변수 타입은 String[]
  • Object[]를 String[]으로 바로 변환할 수 없으니까 타입 불일치 에러가 발생

해결

return str_arr.toArray(new String[0]);

 

  • 원하는 타입 배열(String[])을 인자로 넘기면, 그 타입으로 변환
  • new String[0]은 단순히 "난 String 배열 원해!"라고 알려주는 역할
  • 크기 0을 주는 이유는 → toArray()가 자동으로 answer.size()만큼 알맞게 새 배열을 만들어 채워주기 때문
728x90
반응형