과거의 이력/JAVA

[Java] HashMap 배열의 타입? (java.util.ArrayList cannot be cast to [Ljava.lang.String)

정많이 정만이 2022. 3. 19. 19:25

프론트와 서버간 데이터를 통신할때 다음과 같은 에러가 발생했다.

java.util.ArrayList cannot be cast to [Ljava.lang.String

프론트에서 ['a', 'b'] 와 같이 배열타입을 넘겼을때 Java에서 발생한 에러이다.

 


java에서 HashMap<String, Object>로 값을 받을때
해당 배열은 ArrayList로 받아진다.
자동으로 데이터 통신시 해당 데이터 타입을 ArrayList로 타입캐스팅을 하는것이다.

처음에 String[] 타입으로 데이터를 받으려고 하니 타입미 맞지 않아 에러가 발생한 것이다.

 

따라서 다음과 같은 방식으로 배열값을 String[]로 변환하였다.

 

📌 초기 데이터 타입 -  ArrayList<String>

📌 최종 데이터 타입 - String[]

 

💻 XMLHttpRequest(XHR) 예제

public testData testFunc(HashMap<String, Object> myData) throws Exception {

	ArrayList <String> userNameTmp  = (ArrayList<String>) myData.get("userName");
	String[] userName = userNameTmp.toArray(new String[0]);
}