less than 1 minute read 방법1 변수명.getClass().getName() 방법2 Object obj = field.get(clazz); // 임의의 객체를 Object형으로 가져옵니다.
// instanceof를 이용한 비교
if (obj instanceof Integer) {
System.out.println("숫자형입니다.")
} else if (obj instanceof String) {
System.out.println("문자열입니다.")
} else if (obj instanceof String[]) {
System.out.println("문자열 배열입니다.")
}
자바 타입 확인
자바 타입 확인
You May Also Enjoy
less than 1 minute read gcp 안켜질때 gcp 안켜질때
객체 타입 확인
- 강제 타입 변환은 구현 객체가 인터페이스 타입으로 변환되어 있는 상태에서 가능하다!
- 하지만 어떤 객체가 변환되어 있는지 알 수 없는 상황에서 가제 타입 변환을 하면 예외가 발생한다!
- 이러한 상황을 대비해서 우리는 객체의 타입을 확인해야 한다.
키워드
- A instanceof B
- instanceof는 인터페이스 타입에서도 사용할 수 있다
인터페이스 타입으로 자동 변환된 매개값을 메소드 내에서 다시 구현 클래스 타입으로 강제 변환해야 한다면 매개값이 어떤 객체인지 instanceof를 사용해서 확인하고 강제 변환을 해야 한다.
class A { } class B extends A{ } public class Test { public static void main(String[] args) { A a = new B(); B b = new B(); if( b instanceof A){ System.out.println("변환 가능"); }else{ System.out.println("변환 불가능"); } System.out.println("==============="); if( a instanceof B){ System.out.println("변환 가능"); }else{ System.out.println("변환 불가능"); } System.out.println("==============="); A a1 = new A(); if( a1 instanceof A){ System.out.println("변환 가능"); }else{ System.out.println("변환 불가능"); } System.out.println("==============="); if( a1 instanceof B){ System.out.println("변환 가능"); }else{ System.out.println("변환 불가능"); } System.out.println("==============="); } }} }
마지막 출력을 보면 장제 타입 변환의 조건 중 하나인 자식 타입이 부모 타입으로 변환되어 있어야 강제 변환이 가능한데, 자식 타입이 부모 타입으로 변환되어 있지 않기 때문에 변환 불가능이 출력되었다!
즉, 정리하자만
instanceof 연산자는 객체가 어떤 타입인지 조사할 때 사용하며, 주로 강제 타입 변환 전에 변환이 가능한지 조사할 때 사용한다!
혹시나 궁금한 점은 댓글로 남겨주세요!
자바에서 객체의 타입을 확인하는 법
자바로 코딩을 하다보면 각 객체들의 타입을 체크해야만 할 때가 있다. 그럴 때에 사용하는 것이 바로 instanceof 연산자이다.
instanceof 연산자의 구문은 다음과 같다:
객체_레퍼런스 instanceof 클래스_타입
instanceof는 이항 연산자로서 주어진 레퍼런스 변수가 가리키는 객체가 주어진 클래스의 타입인지 확인을 한 후, 그 결과에 해당하는 boolean을 반환한다.
i.e.
class Person {}
class Student extends Person {}
class Researcher extends Person {}
class Professor extends Researcher {}
public class InstanceofExample {
public static void main(String[] args) {
Person a = new Studnet();
Person b = new Researcher();
Person c = new Professor();
Person d = new Person();
if ( a instanceof Student)
System.out.println("a is a student");
if (b instanceof Person)
System.out.println("b is a person");
if (b instanceof Researcher)
System.out.println("b is a researcher");
if (c instanceof Person)
System.out.println("c is a person");
if (c instanceof Researcher)
System.out.println("c is a researcher");
if (c instanceof Professor)
System.out.println("c is a professor");
if ( !(d instanceof Researcher) )
System.out.println("d is not a researcher");
}
}
위의 예제를 실행시키게 되면, 다음과 같은 결과를 얻게 될 것이다.
a is a student
b is a person
b is a researcher
c is a person
c is a researcher
c is a professor
d is not a researcher