item 27 dodo4513 - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

์•„์ดํ…œ27 ๋น„๊ฒ€์‚ฌ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๋ผ

  • ๋Œ€๋ถ€๋ถ„์˜ ๋น„๊ฒ€์‚ฌ ๊ฒฝ๊ณ ๋Š” ์•„๋ž˜์™€ ๊ฐ™ ์‰ฝ๊ฒŒ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.
// bad
Set<Lark> exaltation = new HashSet();

// good
Set<Lark> exaltation = new HashSet<>();
  • ์ œ๊ฑฐํ•˜๊ธฐ ํ›จ์”ฌ ์–ด๋ ค์šด ๊ฒฝ๊ณ ๋„ ์žˆ๋‹ค. ๊ณง๋ฐ”๋กœ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š” ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋„ ํฌ๊ธฐํ•˜์ง€ ๋ง์ž! ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๋ชจ๋“  ๋น„๊ฒ€์‚ฌ ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•˜๋ผ. ๋ชจ๋‘ ์ œ๊ฑฐํ•œ๋‹ค๋ฉด ๊ทธ ์ฝ”๋“œ๋Š” ํƒ€์ž… ์•ˆ์ „์„ฑ์ด ๋ณด์žฅ๋œ๋‹ค. ์ฆ‰, ๋Ÿฐํƒ€์ž„์— ClassCastException์ด ๋ฐœ์ƒํ•  ์ผ์ด ์—†๊ณ , ์—ฌ๋Ÿฌ๋ถ„์ด ์˜๋„ํ•œ ๋Œ€๋กœ ์ž˜ ๋™์ž‘ํ•˜๋ฆฌ๋ผ ํ™•์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ์— ์ œ๊ฑฐํ•˜๊ธฐ ํž˜๋“ค๋‹ค๋ฉด?

@Suppress
Warnings("unchecked")
  • ๊ฒฝ๊ณ ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ํƒ€์ž… ์•ˆ์ „ํ•˜๋‹ค๊ณ  ํ™•์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์œ„ ์• ๋„ˆํ…Œ์ด์…˜์„ ๋‹ฌ์•„ ๊ฒฝ๊ณ ๋ฅผ ์ˆจ๊ธฐ์ž.
  • @SuppressWarnings ์• ๋„ˆํ…Œ์ด์…˜์€ ๊ฐœ๋ณ„ ์ง€์—ญ๋ณ€์ˆ˜ ์„ ์–ธ๋ถ€ํ„ฐ ํด๋ž˜์Šค ์ „์ฒด๊นŒ์ง€ ์–ด๋–ค ์„ ์–ธ์—๋„ ๋‹ฌ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ @SuppressWarnings ์• ๋„ˆํ…Œ์ด์…˜์€ ํ•ญ์ƒ ๊ฐ€๋Šฅํ•œ ํ•œ ์ข์€ ๋ฒ”์œ„์— ์ ์šฉํ•˜์ž. ์ž์นซ ์‹ฌ๊ฐํ•œ ๊ฒฝ๊ณ ๋ฅผ ๋†“์น  ์ˆ˜ ์žˆ์œผ๋‹ˆ ์ ˆ๋Œ€๋กœ ํด๋ž˜์Šค ์ „์ฒด์— ์ ์šฉํ•ด์„œ๋Š” ์•ˆ ๋œ๋‹ค.
  • @SuppressWarnings("unchecked") ์• ๋„ˆํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•  ๋•Œ๋ฉด ๊ทธ ๊ฒฝ๊ณ ๋ฅผ ๋ฌด์‹œํ•ด๋„ ์•ˆ์ „ํ•œ ์ด์œ ๋ฅผ ํ•ญ์ƒ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ์•ผ ํ•œ๋‹ค.

ํ•ต์‹ฌ์ •๋ฆฌ

๋น„๊ฒ€์‚ฌ ๊ฒฝ๊ณ ๋Š” ์ค‘์š”ํ•˜๋‹ˆ ๋ฌด์‹œํ•˜์ง€ ๋ง์ž.
๋ชจ๋“  ๋น„๊ฒ€์‚ฌ ๊ฒฝ๊ณ ๋Š” ๋Ÿฐํƒ€์ž„์— ClassCastException์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ์  ๊ฐ€๋Šฅ์„ฑ์„ ๋œปํ•˜๋‹ˆ ์ตœ์„ ์„ ๋‹คํ•ด ์ œ๊ฑฐํ•˜๋ผ.
๊ฒฝ๊ณ ๋ฅผ ์—†์•จ ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ•˜๊ฒ ๋‹ค๋ฉด, ๊ทธ ์ฝ”๋“œ๊ฐ€ ํƒ€์ž… ์•ˆ์ „ํ•จ์„ ์ฆ๋ช…ํ•˜๊ณ  ๊ฐ€๋Šฅํ•œ ํ•œ ๋ฒ”์œ„๋ฅผ ์ขํ˜€ @SuppressWarnings("unchecked") ์• ๋„ˆํ…Œ์ด์…˜์œผ๋กœ ๊ฒฝ๊ณ ๋ฅผ ์ˆจ๊ฒจ๋ผ.
๊ทธ๋Ÿฐ ๋‹ค์Œ ๊ฒฝ๊ณ ๋ฅผ ์ˆจ๊ธฐ๊ธฐ๋กœ ํ•œ ๊ทผ๊ฑฐ๋ฅผ ์ฃผ์„์œผ๋กœ ๋‚จ๊ฒจ๋ผ.

โš ๏ธ **GitHub.com Fallback** โš ๏ธ