과거의 이력/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]);
}