Instanceof 연산자
1. 참조변수가 참조하는 인스턴스의 실제 타입을 체크하는데 사용
2. 이항연산자이며 피연산자는 참조형 변수와 타입, 연산결과는 True , false
3. Instanceof의 연산결과가 True이면 , 해당 타입으로 형변환이 가능하다.
설명서
instanceof연산자는 참조변수가 참조하고 있는 인스턴스의 타입을 체크하는데 사용됩니다.
다형성을 통해 조상타입의 참조변수로 자손타입의 인스턴스를 가리킬 수 있게 되었기 때문에...
참조변수의 타입과 참조변수가 가리키는 인스턴스의 타입이 항상 같지는 않습니다.
그래서... 참조변수가 가리키는 인스턴스의 타입이 어떤 것인지 확인하기 위해서 instanceof연산자를 사용하는 것입니다.
예제를 보시면... FireEngine인스턴스를 생성해서 참조변수 fe가 가리키도록 했습니다.
그리고... instanceof연산자를 이용해서... 참조변수 fe가 가리키는 인스턴스의 타입이 FireEngine타입인지 확인합니다.
인스턴스의 타입이 FireEngine이면 instanceof의 결과는 true가 되고, 그렇지 않으면 false가 됩니다.
여기서는 참조변수 fe가 가리키는 인스턴스의 타입이 FireEngine이 맞으므로 instanceof의 결과가 true가 되어
이 문장이 화면에 출력됩니다.
그 다음에도 Car타입인지, Object타입인지... 확인을 하는데요...
실행결과를 보면... 실제인스턴스가 FireEngine임에도 불구하고,
Car타입과 Object타입에 대한 instanceof검사도 결과가 true라는 것을 알 수 있습니다.
참조변수를 어떤 타입에 instanceof연산을 했을 때 결과가 true라는 것은...
참조변수를 검사한 타입으로 형변환하는 것이 가능하다는 의미 입니다.
그래서... instanceof연산자가 실제인스턴스의 타입을 알려준다기 보다는...
형변환이 가능한지를 알려준다고 하는 것이 더 옳다고 생각합니다.
예들들어... 이와 같은 method가 있을 때... 매개변수의 타입이 Object지만...
이 참조변수가 가리키고 있는 인스턴스의 타입은 무엇인지 확신할 수 없습니다.
이럴 때는 반드시... instanceof로 체크를 한 후에 형변환을 해야 안전합니다.
'Backend > java' 카테고리의 다른 글
매개변수의 다형성 (0) | 2018.08.12 |
---|---|
참조변수와 인스턴스변수의 연결 (0) | 2018.08.12 |
참조변수의 형변환 예제 (0) | 2018.08.12 |
참조변수의 형변환 (0) | 2018.08.12 |
다형성이란 무엇인가3 (0) | 2018.08.12 |
#IT #먹방 #전자기기 #일상
#개발 #일상