...
자바 변수의 타입 얻기
만일 해당 변수의 타입을 비교하거나 변수의 타입 정보가 필요할 경우, 자바스크립트 진영에서는 typeof 연산자로 아주 간단하게 가져올 수 있다. 그러나 자바 진영에선 기본적으로 객체 지향 프로그래밍 언어이기 때문에 int형이나 double형 같은 primitive 타입은 Wrapper 클래스 타입으로 확인할 수 밖에 없다. Object 클래스의 getClass() 메서드를 이용하면 쉽게 가져올 수가 있다.
public static void main(String[] args) {
// 해당 변수 타입 출력 (Wrapper 클래스 타입으로)
int pri_value = 1;
System.out.println(((Integer) pri_value).getClass().getSimpleName()); // Integer
}
public static void main(String[] args) {
// 혹은 isInstance 메소드로 바로 비교가 가능하다
int a = 1;
System.out.println(Integer.class.isInstance(a)); // true
double b = 1.0;
System.out.println(Double.class.isInstance(b)); // true
String c = "1";
System.out.println(String.class.isInstance(c)); // true
}
자바 typeof 구현하기
그런데 Wrapper 클래스 타입이 아닌 primitive 타입으로의 출력이 필요하다면 다음과 같이 직접 구현하여 사용하여야 한다. 방법은 여러가지지만, 예시로 Check 라는 사용자 클래스를 만들고 typeof 메서드를 오버로딩(overloading) 하여 각각 구현해 주었다.
class Check {
public static Class<Integer> typeof(final int expr) {
return Integer.TYPE;
}
public static Class<Long> typeof(final long expr) {
return Long.TYPE;
}
public static Class<Float> typeof(final float expr) {
return Float.TYPE;
}
public static Class<Double> typeof(final double expr) {
return Double.TYPE;
}
// ...
}
public class Main {
public static void main(String[] args) {
System.out.println(Check.typeof(1)); // int
System.out.println(Check.typeof(1.0)); // double
}
}
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.