Type mismatch: cannot convert from int to (Data Type)

 

 

   가장 쉽게 보는 오류 중 하나로 변수에 데이터를 담을 때 형식이 맞지 않아 발생한다.

   보통 이럴 때는 데이터 타입을 잘못 지정했는지 확인해보거나, 아니면 강제로 형변환을 통해 해결하는 경우가 많다.

   잘못 지정했는지 확인하여 해결되는 것 말고, 강제로 형변환을 통하는 경우 몇가지를 알아보자.

 

		int a = 100;
		request.setAttribute("int_a", a);
		
		int b = request.getAttribute("int_a"); //에러 발생

 

   대표적으로 사용하는 예는 request객체를 활용할 때, request에 데이터를 저장하게 되면 어떤 타입이던 객체들의 조상인 Object로 저장되기 때문에 다시 꺼낼때는 무조건 Type mismatch 에러가 발생하게 된다. 이럴 때는 그냥 강제 형변환으로 받아주면 문제 없다.

		int b = (int) request.getAttribute("int_a"); //강제 형변환

 


 

Cannot cast from String to (Data Type)

 

   1 : 1 로 변환이 되는 경우가 아니라 이번에는 문자열에서 숫자 그대로 바꾸는 방법을 알아보자.

 

   위와 같은 강제 형변환은 대부분 원본을 왜곡시키며 강제로 형태를 바꾸는 것이 가능하지만 문자열에서 강제 형변환은 힘들다. 이는 String 자체가 하나의 객체기 때문에 데이터 타입으로 보기는 어렵기 때문이다. 따라서 문자열을 정수나 실수로 바꾸려 한다면 해당하는 데이터 타입 클래스의 parse~ 함수를 이용해야 한다.

		String a = "12345";
		request.setAttribute("S_a", a);
		
		int b = Integer.parseInt((String)request.getAttribute("S_a"));

 

 

'오류노트' 카테고리의 다른 글

webflow Http Status 404 Error  (0) 2024.11.11
mySQL update 및 delete가 안될 때  (0) 2024.11.10
Tiles.xml 설정 주의 사항  (0) 2024.11.09
Downloading external resources is disabled  (0) 2024.11.08
java.lang.NullPointerException  (0) 2024.10.29

+ Recent posts