블로그 이름

The method setAAAA(ArrayList<Object>) in the type AAAA is not applicable for the arguments (List<AAAA>) 본문

개발/오류

The method setAAAA(ArrayList<Object>) in the type AAAA is not applicable for the arguments (List<AAAA>)

Hide 2024. 9. 5. 20:26

The method setAAAA(ArrayList<Object>) in the type AAAA is not applicable for the arguments (List<AAAA>) 오류가 났다.

 

AAAA라는 객체가 있는데,

setAAAA에서 ArrayList<Object> 타입의 인자를 받도록 정의되어 있다.

하지만 List<AAAA> 타입의 인자를 전달하고 있기 때문에 타입이 일치하지 않아 오류가 발생했다.

 

List<AAAA>는 List<Object>로 자동 변환되지 않기 때문에 인자를 받을 수 없다.

 

해결 방법

  1. 타입 캐스팅: 만약AAAA가 Object로 변환될 수 있는 타입이라면, 다음과 같이 강제 타입 변환을 할 수 있다
ArrayList<Object> objectList = new ArrayList<>(list);
resultObject.setAAAA(objectList);
2. 제네릭 타입 수정: 만약 setAAAA 메서드가 더 구체적인 타입을 허용해야 한다면, 메서드 정의를 제네릭으로 변경할 수 있다.
public <T> void setAAAA (ArrayList<T> values) {  }

 

3. 타입 일치: 만약 ArrayList<AAAA>를 사용하는 것이 맞다면, AAAA클래스의 메서드 정의를 수정해서 ArrayList<AAAA> 타입을 받도록 변경할 수 있다.

public void setAAAA(ArrayList<AAAA> values) {  }
4.오버로딩: setResultValues 메서드를 오버로딩하여 다양한 타입을 받을 수 있도록 할 수도 있다.
public void setAAAA (ArrayList<Object> values) {  }
public void setAAAA (ArrayList<AAAA> values) {  }

 

 


ArrayList<AAAA> 에서 ArrayList<Object> 로 변환은 가능하지만

List<AAAA> 에서 ArrayList<Object> 로 변환은 안되어

ArrayList<Object> list = new ArrayList<>();

로 생성해서 타입에 맞춰 넣는걸로 해결했다