dev_dbdb1114

Java instanceof 연산자 본문

프로그래밍/JAVA

Java instanceof 연산자

dbdb1114 2022. 5. 22. 13:47

instanceof 연산자는 인스턴스의 실제타입을 알아보기 위해 사용되고, 대개 조건문에서 사용된다.

 

사용법은 "참조변수 instanceof 타입(피연산자)" 방식으로 사용된다. 연산결과는 boolean타입이다.

 

아래와 같이 설명할 수 있는데 참조변수가 피연산자 타입이 맞다면, true를 반환하고, 아니라면 false를 반환한다. 

 

자손클래스가 조상클래스를 포함하지만 만약에 피연산자로 자손타입이 온다면 결과값은 false가 나온다.

반대로 피연산자로 조상타입이 온다면 결과값은 true가 나온다. 

 

class Parents{}
class Child extends Parents{}
public class instanceof_ {

	public static void main(String[] args) {

		Child child = new Child();
		Parents parents = new Parents();
		
		System.out.println(child instanceof Child); // true
		System.out.println(parents instanceof Child); // false
		System.out.println(child instanceof Parents); // true 
		System.out.println(parents instanceof Parents); // true
	}

}

이 연산자를 사용하는 이유는

만약 어떠한 메소드에서 매개변수로 인스턴스가 올 때,

올 수 있는 매개변수는 해당하는 타입의 인스턴스와 조상타입의 인스턴스이기 때문에 어떤 타입의 인스턴스가 들어왔을지 정확히 알 수 없다. 따라서 앞서 말했듯 대개 조건문에서 쓴다고 하였던 이유도 if문의 조건문 안에서 어떤 타입의 인스턴스인지 확인 후, 인스턴스에 따라서 문장을 수행시키기 위함이었다. 

 

공부를 하다가 내가 instanceof 연산자를 제대로 모르고 있었다는 사실을 발견하고, 급하게 정리를 한다.

내 착각은 "조상클래스의 인스턴스 instanceof 자손클래스"를 확인하면 true가 반환될 것이라고 생각했었다. 하지만 위에서 말했듯 그렇지 않다. 

 

 

Comments