자바 Object 타입 확인 - jaba Object taib hwag-in

자바 타입 확인

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("문자열 배열입니다.") }

Previous Next

You May Also Enjoy

gcp 안켜질때

less than 1 minute read

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

Toplist

최신 우편물

태그