[JAVA] instanceof vs getClass() ์•Œ์•„๋ณด๊ธฐ

2025. 2. 27. 23:51ยทCategory/Java
728x90

instanceof๋ž€?

๐Ÿ‘‰ instanceof๋Š” ๊ฐ์ฒด๊ฐ€ ํŠน์ • ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ํ™•์ธํ•˜๋Š” ํ‚ค์›Œ๋“œ
๐Ÿ‘‰ ์ฆ‰, ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ํŠน์ • ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ํŒ๋ณ„ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋จ

1. instanceof ๊ธฐ๋ณธ ์‚ฌ์šฉ๋ฒ•

if (๊ฐ์ฒด instanceof ํด๋ž˜์Šค๋ช…) { 
	// ๊ฐ์ฒด๊ฐ€ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ผ๋ฉด ์‹คํ–‰ 
}

 

String text = "Hello"; 
if (text instanceof String) { 
	System.out.println("โœ… text๋Š” String ํƒ€์ž…์ž…๋‹ˆ๋‹ค!"); 
}

โžก ์ถœ๋ ฅ: โœ… text๋Š” String ํƒ€์ž…์ž…๋‹ˆ๋‹ค!
โžก text๊ฐ€ String์˜ ์ธ์Šคํ„ด์Šค์ด๋ฏ€๋กœ true

2. instanceof ํ™œ์šฉ ์˜ˆ์ œ

(1) ๋ถ€๋ชจ ํด๋ž˜์Šค์™€ ์ž์‹ ํด๋ž˜์Šค ํŒ๋ณ„

class Animal {} 

class Dog extends Animal {} 

public class InstanceofExample { 
	public static void main(String[] args) { 
    	Animal a = new Dog(); 
        
        if (a instanceof Dog) { 
        	System.out.println("โœ… a๋Š” Dog ํƒ€์ž…์ž…๋‹ˆ๋‹ค!"); 
        } 
        
        if (a instanceof Animal) { 
        	System.out.println("โœ… a๋Š” Animal ํƒ€์ž…์ž…๋‹ˆ๋‹ค!"); 
        } 
    } 
}

์‹คํ–‰ ๊ฒฐ๊ณผ

โœ… a๋Š” Dog ํƒ€์ž…์ž…๋‹ˆ๋‹ค! 
โœ… a๋Š” Animal ํƒ€์ž…์ž…๋‹ˆ๋‹ค!

โœ” a๋Š” Dog ์ธ์Šคํ„ด์Šค์ด๋ฉด์„œ Animal ํƒ€์ž…์ด๋ฏ€๋กœ ๋‘˜ ๋‹ค true.

728x90

3. instanceof์™€ null

โœ” null instanceof๋Š” ํ•ญ์ƒ false

String str = null; 
System.out.println(str instanceof String); // false

โžก null์€ ์–ด๋–ค ํƒ€์ž…์—๋„ ์†ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ false

4. instanceof vs getClass()

- instanceof๋Š” ์ƒ์† ๊ด€๊ณ„๋„ ์ฒดํฌํ•˜์ง€๋งŒ,
- getClass()๋Š” ์ •ํ™•ํ•œ ํด๋ž˜์Šค๋งŒ ์ฒดํฌ

class Parent {}

class Child extends Parent {} 

public class Test { 
    public static void main(String[] args) { 
        Parent obj = new Child(); 
        System.out.println(obj instanceof Parent); // โœ… true 
        System.out.println(obj instanceof Child); // โœ… true 
        System.out.println(obj.getClass() == Parent.class); // โŒ false 
        System.out.println(obj.getClass() == Child.class); // โœ… true 
    } 
}

์ •๋ฆฌ

โœ” instanceof๋Š” ๊ฐ์ฒด๊ฐ€ ํŠน์ • ํด๋ž˜์Šค(๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค)์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ํŒ๋ณ„
โœ” null instanceof๋Š” ํ•ญ์ƒ false
โœ” ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋„ ์ฒดํฌ ๊ฐ€๋Šฅ (Dog๋Š” Animal์˜ ์ธ์Šคํ„ด์Šค์ž„)
โœ” getClass()์™€ ๋‹ค๋ฅด๊ฒŒ instanceof๋Š” ์ƒ์† ๊ด€๊ณ„๊นŒ์ง€ ์ฒดํฌ

728x90

'Category > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[JAVA] var๋ž€?  (0) 2025.02.27
[JAVA] ๋žŒ๋‹ค ํ‘œํ˜„์‹(Lambda Expression)๊ณผ ๋ฉ”์†Œ๋“œ ์ฐธ์กฐ(Method Reference)  (0) 2025.01.12
[JAVA] ๋ฐ˜๋ณต๋ฌธ ์ •๋ฆฌ  (0) 2025.01.12
'Category/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [JAVA] var๋ž€?
  • [JAVA] ๋žŒ๋‹ค ํ‘œํ˜„์‹(Lambda Expression)๊ณผ ๋ฉ”์†Œ๋“œ ์ฐธ์กฐ(Method Reference)
  • [JAVA] ๋ฐ˜๋ณต๋ฌธ ์ •๋ฆฌ
Corinee
Corinee
  • Corinee
    Coding Note
    Corinee
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (361) N
      • Category (354)
        • Algorithm (7)
        • SQL (2)
        • Java (4)
        • C (9)
        • React (7)
        • JavaScript (9)
        • CSS (2)
        • Node (1)
        • SpringBoot (26)
        • Database (3)
        • Network (1)
        • Django (6)
        • Python (22)
        • Flask (4)
        • iOS (25)
        • Swift (4)
        • Flutter (11)
        • Dart (3)
        • Git (1)
        • Firebase (1)
        • Gof (1)
        • ์ •๋ณด์ฒ˜๋ฆฌ๊ธฐ์‚ฌ (112)
        • AI (5)
        • NestJs (4)
        • Docker (1)
        • ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ (1)
        • Note (80)
        • Socket (1)
        • ๊ฐœ์ธ ์ •๋ณด ์ฒ˜๋ฆฌ ๋ฐฉ์นจ (1)
        • ๋ฉด์ ‘ (0)
        • Vue.js (0)
      • Archive (2) N
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    math.h
    x.y.z (๋ฉ”์ด์ €.๋งˆ์ด๋„ˆ.ํŒจ์น˜)
    ์‰ฝ๊ฒŒ ํ’€์–ด์“ด C์–ธ์–ด Express
    stdlib.h
    inp
    Collections
    mcp server
    core web vitals
    ์›์‹œ๊ฐ’(primitive)
    Jest
    ์†Œํ”„ํŠธ์›จ์–ด ๋ฒ„์ „ ๊ด€๋ฆฌ
    public vs assets
    structuredclone()
    useEffect
    react router
    counter
    intellij ์ฝ˜์†” ํ•œ๊ธ€ ๊นจ์ง
    chrome extension ์ž๋™ ๋ฐฐํฌ
    defaultdict
    mermaid-cli
    named export vs default export
    json.parse(json.stringify())
    ํ”„๋กœ์„ธ์Šค ๊ฐ•์ œ ์ข…๋ฃŒ
    react
    semver)
    ์ค‘์ฒฉ ํ•จ์ˆ˜(nested function)
    ajax (asynchronous javascript and xml)
    ์‹œ๋งจํ‹ฑ ๋ฒ„์ „(semantic versioning
    styled-components
    jackson ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
Corinee
[JAVA] instanceof vs getClass() ์•Œ์•„๋ณด๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”