자바에서 변수 타입을 확인하고 싶은 경우가 있습니다.
형변환을 하기 전에 사전 체크를 하기 위해서 또는 형변환을 하고 나서 데이터 타입을 확인하고 싶은 경우등 변수의 데이터 타입을 확인하고 싶은 경우입니다.
자바에서 데이터 타입을 확인하기 위해서는 getClass().getName()를 사용합니다.
getClass().getName()
타입을 확인하기 위해 사용하는 getClass().getName() 사용 방법은 다음과 같습니다.
변수명.getClass().getName()
반환값으로는 클래스 이름을 반환합니다.
샘플을 보면서 확인해보겠습니다.
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
public class Program
{
public static void main(String[] args) {
String strname = "10";
Integer intname = 10;
ArrayList<String> listname = new ArrayList<String>();
HashMap<String, Integer> hashname = new HashMap<>();
// 출력
System.out.println(strname.getClass().getName());
System.out.println(intname.getClass().getName());
System.out.println(listname.getClass().getName());
System.out.println(hashname.getClass().getName());
}
}
결과
java.lang.String
java.lang.Integer
java.util.ArrayList
java.util.HashMap
변수의 타입이 출력되었습니다.
정확히 보면 변수의 클래스 타입이 출력되었습니다.
클래스 타입이 반환되어 출려되기 때문에 클래스 타입이 아닌 경우에는 에러가 발생합니다.
public class Program
{
public static void main(String[] args) {
int intname = 10;
// 출력
System.out.println(intname.getClass().getName());
}
}
결과
./Playground/Program.java:14: error: int cannot be dereferenced
System.out.println(intname.getClass().getName());
^
1 error
변수 선언을 할때 지정한 int 타입은 getClass()가 없기 때문에 에러가 발생합니다.
만약 모든 데이터 타입을 확인해야 하는경우에는 try catch로 예외처리를 잡아주는 것이 좋습니다.
댓글