Generic

์ž๋ฐ”์—์„œ Generic์€ ๊ฒฐ์ •๋˜์ง€ ์•Š์€ ํƒ€์ž…์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฒ˜๋ฆฌํ•˜๊ณ 

์‹ค์ œ ์‚ฌ์šฉํ•  ๋•Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ตฌ์ฒด์ ์ธ ํƒ€์ž…์œผ๋กœ ๋Œ€์ฒด ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ

public Class Box {
    public  ? content // 
}

Box ํด๋ž˜์Šค์— ๋„ฃ์„ ๋‚ด์šฉ๋ฌผ๋กœ content ๋ผ๋Š” ํ•„๋“œ๋ฅผ ์„ ์–ธํ•˜๋ ค๊ณ  ํ•  ๋•Œ, ํƒ€์ž…์„ ๋ฌด์—‡์œผ๋กœ ํ•ด์•ผ ํ• ๊นŒ?

Box ๋Š” ๋‹ค์–‘ํ•œ ๋‚ด์šฉ๋ฌผ์„ ์ €์žฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ํŠน์ • ํด๋ž˜์Šค ํƒ€์ž…์„ ์„ ์–ธํ•  ์ˆ˜ ์—†๋‹ค.

Object ํƒ€์ž…์€ ๋ชจ๋“  ํด๋ž˜์Šค์˜ ์ตœ์ƒ์œ„ ๋ถ€๋ชจ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฐ์ฒด๋Š” Object ํƒ€์ž…์œผ๋กœ

์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜๋œ๋‹ค. ์ฆ‰ content ํ•„๋“œ์—๋Š” ์–ด๋–ค ๊ฐ์ฒด๋“  ๋Œ€์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

public Class Box {
    public  Object content 
    
}

Box box = new Box();
box.content = ๋ชจ๋“  ๊ฐ์ฒด;

ํ•˜์ง€๋งŒ Box ์•ˆ์˜ ๋‚ด์šฉ๋ฌผ์„ ์–ป์„ ๋•Œ์—๋Š” ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋Œ€์ž…๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด String ํƒ€์ž…์ด๋ฉด ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜์œผ๋กœ String์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

String content = (String) box.content;

instanceof ์—ฐ์‚ฐ์ž๋กœ ํƒ€์ž…์„ ์กฐ์‚ฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ชจ๋“  ์ข…๋ฅ˜์˜ ํด๋ž˜์Šค๋ฅผ ๋Œ€์ƒ์œผ๋กœ ์กฐ์‚ฌํ•  ์ˆ˜๋Š” ์—†๋‹ค.

๋”ฐ๋ผ์„œ Object ํƒ€์ž…์œผ๋กœ content๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์€ ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ๋‹ค.

Box ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— ์šฐ๋ฆฌ๋Š” ์–ด๋–ค ๋‚ด์šฉ๋ฌผ์„ ๋„ฃ์„ ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

Last updated