๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š์ฝ์€ ์ฑ… ์ •๋ฆฌ/์ดํŽ™ํ‹ฐ๋ธŒ์ž๋ฐ”

[์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”] 9์žฅ : ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์›์น™

์ง€์—ญ๋ณ€์ˆ˜, ์ œ์–ด๊ตฌ์กฐ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ๋ฐ์ดํ„ฐ ํƒ€์ž…, ๋ฆฌํ”Œ๋ ‰์…˜, ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž

์•„์ดํ…œ 57 : ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋ผ

๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ•˜๋Š”ํ•˜๋Š” ๋ฐฉ๋ฒ•

  1. ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์ค„์ด๋Š” ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋ฐฉ๋ฒ•์€ ‘๊ฐ€์žฅ ์ฒ˜์Œ ์“ฐ์ผ ๋•Œ ์„ ์–ธํ•˜๊ธฐ'์ด๋‹ค.
  2. ๊ฑฐ์˜ ๋ชจ๋“  ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™” ํ•ด์•ผํ•œ๋‹ค.
  3. ๋ฉ”์„œ๋“œ๋ฅผ ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ํ•œ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์— ์ง‘์ค‘ํ•ด๋ผ. (๋‹ค๋ฅธ ๊ธฐ๋Šฅ์—์„œ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก)

๋ฒ”์œ„๋ฅผ ์ตœ์†Œ๋กœ ์ค„์ด๋ฉด ์ฝ”๋“œ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์•„์ง€๊ณ  ์˜ค๋ฅ˜ ๊ฐ€๋Šฅ์„ฑ์ด ๋‚ฎ์•„์ง„๋‹ค.

์˜ˆ์‹œ

  • ๋ฐ˜๋ณต ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๋ฐ˜๋ณต๋ฌธ ์ข…๋ฃŒํ›„์—๋„ ์จ์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์•„๋‹ˆ๋ผ๋ฉด while๋ฌธ๋ณด๋‹ค๋Š” for๋ฌธ์ด ๋‚ซ๋‹ค.
    • for๋ฌธ์€ ๋ฐ˜๋ณต ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๊ฐ€ for๊ด„ํ˜ธ์•ˆ์œผ๋กœ ์ œํ•œ๋œ๋‹ค.
  • try-catch ์‚ฌ์šฉ ์‹œ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฒ€์‚ฌ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋‹ค๋ฉด try๋ธ”๋ก ์•ˆ์—์„œ ์ดˆ๊ธฐํ™” ํ•ด์•ผ๋งŒ ํ•œ๋‹ค. ๋งŒ์•ฝ, ๋ณ€์ˆ˜๋ฅผ try๋ฌธ ๋ฐ”๊นฅ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์„ ์–ธ์€ try๋ฌธ ๋ฐ–์— ํ•ด๋‘ฌ์•ผ ํ•œ๋‹ค.

์•„์ดํ…œ 58 : ์ „ํ†ต์ ์ด for๋ฌธ๋ณด๋‹ค๋Š” for-each๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ผ

for๋ฌธ์€ while๋ฌธ๋ณด๋‹ค๋Š” ๋‚ซ๋‹ค๊ณ  ์ด์ „ ์•„์ดํ…œ์—์„œ ๋งํ–ˆ์ง€๋งŒ ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๋‹ค.

for๊ฐ€ ์ข‹์ง€์•Š์€์ด์œ 

  • ์ž์ฃผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋Š” ์ธ๋ฑ์Šค ๋ณ€์ˆ˜๋Š” ์‹ค์ˆ˜๋ฅผ ์œ ๋ฐœํ•˜๊ฒŒ ๋˜๊ณ  ์ด ์‹ค์ˆ˜๋ฅผ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์žก์•„์ค€๋‹ค๋Š” ๋ณด์žฅ์ด ์—†๋‹ค.
  • ๋˜ํ•œ ์ปฌ๋ ‰์…˜์ธ์ง€ ๋ฐฐ์—ด์ธ์ง€์— ๋”ฐ๋ผ ์ฝ”๋“œํ˜•ํƒœ๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค.

ํ–ฅ์ƒ๋œ for-each๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ผ

  • ๋ฐ˜๋ณต์ž์™€ ์ธ๋ฑ์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ธ๋ฑ์Šค ์‹ค์ˆ˜๊ฐ€ ๋‚˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•ด์ง„๋‹ค.
  • ํ•˜๋‚˜์˜ ๊ด€์šฉ๊ตฌ๋กœ ์ปฌ๋ ‰์…˜๊ณผ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•œ๋‹ค.
		public static void main(String[] args) {
        List<Card> deck = new ArrayList<>();
        
				// ์‹ค์ˆ˜๋กœ ์ธํ•œ ์˜ค๋ฅ˜๋ฐœ์ƒ
        for (Iterator<Suit> i = suits.iterator(); i.hasNext(); )
            for (Iterator<Rank> j = ranks.iterator(); j.hasNext(); )
                deck.add(new Card(i.next(), j.next()));

        // ์ฝ”๋“œ 58-7 ์ปฌ๋ ‰์…˜์ด๋‚˜ ๋ฐฐ์—ด์˜ ์ค‘์ฒฉ ๋ฐ˜๋ณต์„ ์œ„ํ•œ ๊ถŒ์žฅ ๊ด€์šฉ๊ตฌ (349์ชฝ)
        for (Suit suit : suits)
            for (Rank rank : ranks)
                deck.add(new Card(suit, rank));
    }

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ for๋ฌธ์€ ์‹ค์ˆ˜๋ฅผ ์œ ๋ฐœํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ for-each๋ฌธ์„ ์‚ฌ์šฉํ•˜์ž

ํ•˜์ง€๋งŒ, for-each๋ฌธ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ๋„ ์กด์žฌํ•œ๋‹ค.

  • ํŒŒ๊ดด์  ํ•„ํ„ฐ๋ง : ์ปฌ๋ ‰์…˜์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์„ ํƒ๋œ ์›์†Œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•  ๋–„
    • ๋ฐ˜๋ณต์ž์˜ remove() ์‚ฌ์šฉ
  • ๋ณ€ํ˜• : ๋ฆฌ์ŠคํŠธ๋‚˜ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ๊ทธ ์›์†Œ์˜ ๊ฐ’ ์ผ๋ถ€ ํ˜น์€ ์ „์ฒด๋ฅผ ๊ต์ฒดํ•ด์•ผ ํ•  ๋•Œ
    • ๋ฐ˜๋ณต์ž๋‚˜ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•จ
  • ๋ณ‘๋ ฌ ๋ฐ˜๋ณต : ์—ฌ๋Ÿฌ ์ปฌ๋ ‰์…˜์„ ๋ณ‘๋ ฌ๋กœ ์ˆœํšŒํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๊ฐ ๋ฐ˜๋ณต์ž์™€ ์ธ๋ฑ์Šค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ์—„๊ฒฉํ•˜๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ํ•ด์•ผ ํ•œ๋‹ค.

for-each๋ฌธ์€ ์ปฌ๋ ‰์…˜๊ณผ ๋ฐฐ์—ด์€ ๋ฌผ๋ก ์ด๊ณ  ‘Iterable’ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฐ์ฒด๋ผ๋ฉด ๋ฌด์—‡์ด๋“  ์ˆœํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

์•„์ดํ…œ 59 : ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ตํžˆ๊ณ  ์‚ฌ์šฉํ•˜๋ผ

๋„๋ฆฌ ์“ฐ์ด๊ณ  ์˜ค๋žœ ๊ธฐ๊ฐ„ ์ „๋ถ€ํ„ฐ ๊ฐœ๋ฐœ๋œ random๊ฐ’ ๋ฝ‘๊ธฐ๊ฐ™์€ ๊ธฐ๋Šฅ์€ ์ง์ ‘ ๋งŒ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์ •ํ™•ํ•˜๊ณ  ํšจ์œจ์ ์ด๋‹ค.

  • ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ›จ์”ฌ ๋›ฐ์–ด๋‚œ ์ „๋ฌธ๊ฐ€๋“ค์˜ ๊ฒฝํ—˜์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์šฐ๋ฆฌ๋Š” ์ด์ œ ํ•„์š”ํ•œ ‘ํ•ต์‹ฌ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง'์—๋งŒ ์ง‘์ค‘ํ•˜๋ฉด ๋œ๋‹ค.
  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ์ž‘์ž๋“ค์˜ ๊พธ์ค€ํ•œ ‘์„ฑ๋Šฅ ํ–ฅ์ƒ’
  • ๊ธฐ๋Šฅ์ด ์ ์  ๋งŽ์•„์ง„๋‹ค.
  • ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๊ณต์œ ํ•ด์„œ ์“ฐ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋‚ฏ์ต์€ ์ฝ”๋“œ๊ฐ€ ๋˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•˜๊ธฐ ์ข‹์€ ์ฝ”๋“œ๊ฐ€ ๋œ๋‹ค.

java.lang, util, io์™€ ๊ทธ ํ•˜์œ„ ํŒจํ‚ค์ง€์— ์ต์ˆ™ํ•ด์ง€์ž. ๋˜ํ•œ java.uti.concurrent,์—๋„ ์ต์ˆ™ํ•ด์ง€๋ฉด ์ข‹๋‹ค. ์—†๋Š” ๊ฒƒ์€ ๊ตฌํ˜„ํ•ด์•ผ๊ฒ ์œผ๋‚˜ ์ด๋ฏธ ๊ฐœ๋ฐœ๋œ ๊ฒƒ์€ ๊ฐ€์ ธ๋‹ค์“ฐ๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ํšจ์œจ์ ์ด๋‹ค.

์•„์ดํ…œ 60 : ์ •ํ™•ํ•œ ๋‹ต์ด ํ•„์š”ํ•˜๋‹ค๋ฉด float์™€ double์„ ํ”ผํ•˜๋ผ

float์™€ double ํƒ€์ž…์€ ‘๊ทผ์‚ฌ์น˜'๋กœ ๊ณ„์‚ฐํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ธˆ์œต ๊ด€๋ จ ๊ณ„์‚ฐ๊ณผ๋Š” ๋งž์ง€ ์•Š๋‹ค.

์ˆซ์ž๊ฐ€ ํฌ์ง€ ์•Š๋‹ค๋ฉด int, long์„ ์‚ฌ์šฉํ•˜๊ณ  ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด BigInteger๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์•„์ดํ…œ 61 : ๋ฐ•์‹ฑ๋œ ๊ธฐ๋ณธ ํƒ€์ž…๋ณด๋‹ค๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์„ ์‚ฌ์šฉํ•˜๋ผ

  • ๋ฐ•์‹ฑ ํƒ€์ž…์€ ‘์‹๋ณ„์„ฑ' + ‘๊ฐ’'์„ ์†์„ฑ์œผ๋กœ ๊ฐ–๋Š”๋‹ค.
  • ‘==’ ๋น„๊ต ์‹œ ‘์‹๋ณ„์„ฑ'์„ ์ด์šฉํ•˜๋ฏ€๋กœ ๊ฐ’์ด ๊ฐ™์•„๋„ ๋‹ค๋ฅด๋‹ค๊ณ  ํŒ๋‹จํ•  ์ˆ˜ ์žˆ๋‹ค. (์˜ค๋ฅ˜)
  • ๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ๋ฐ•์‹ฑ๋œ ํƒ€์ž…์„ ํ˜ผ์šฉํ•œ ์—ฐ์‚ฐ์—์„œ๋Š” ๋ฐ•์‹ฑ๋œ ํƒ€์ž…์˜ ๋ฐ•์‹ฑ์ด ์ž๋™์œผ๋กœ ํ’€๋ฆฐ๋‹ค.
  • ๋ฐ˜๋ณต๋ฌธ์—์„œ ๋ฐ•์‹ฑ์„ ์ž˜๋ชป์“ฐ๋ฉด ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

์•„์ดํ…œ 62 : ๋‹ค๋ฅธ ํƒ€์ž…์ด ์ ์ ˆํ•˜๋‹ค๋ฉด ๋ฌธ์ž์—ด ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ

๋ฌธ์ž์—ด์€ ํ…์ŠคํŠธ๋ฅผ ํ‘œํ˜„ํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ ๋‹ค๋ฅธ ์šฉ๋„๋กœ ์“ฐ์ด๋Š” ๊ฒฝํ–ฅ์ด ์žˆ๋‹ค...

“๋ฌธ์ž์—ด์€ ๋‹ค๋ฅธ ๊ฐ’ ํƒ€์ž…์„ ๋Œ€์‹ ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค”

  • ๋ฌธ์ž์—ด์€ ์—ด๊ฑฐ ํƒ€์ž…์„ ๋Œ€์‹ ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
    • ์ƒ์ˆ˜ ์—ด๊ฑฐ๋Š” ๋ฌธ์ž์—ด๋ณด๋‹ค ์—ด๊ฑฐ ํƒ€์ž…์ด ๋‚ซ๋‹ค (์•„์ดํ…œ 34)
  • ๋ฌธ์ž์—ด์€ ํ˜ผํ•ฉ ํƒ€์ž…์„ ๋Œ€์‹ ํ•˜๊ธฐ์— ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.
    • ์—ฌ๋Ÿฌ ์š”์†Œ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ˜ผํ•ฉ๋œ ๊ฒƒ์„ ๋ฌธ์ž์—ด๋กœ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š๋‹ค.
    ์˜ˆ) String compoundKey = className + “#” + i.next();
  • ๋ฌธ์ž์—ด์„ ํŒŒ์‹ฑํ•ด์•ผํ•˜๊ณ  String์˜ ๊ธฐ๋Šฅ์—๋งŒ ์˜์กดํ•ด์•ผํ•œ๋‹ค.
  • ๋ฌธ์ž์—ด์€ ๊ถŒํ•œ์„ ํ‘œํ˜„ํ•˜๋Š”๋ฐ ์ ํ•ฉํ•˜์ง€ ์•Š๋‹ค.

ํ˜„์žฌ ์ƒํ™ฉ์— ๋” ์ ํ•ฉํ•œ ํƒ€์ž…์ด ์žˆ๋‹ค๋ฉด ๋ฌธ์ž์—ด์„ ๋ฒ„๋ฆฌ๊ณ  ์‚ฌ์šฉํ•˜๋ผ.

์•„์ดํ…œ 63 : ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์€ ๋Š๋ฆฌ๋‹ˆ ์ฃผ์˜ํ•˜๋ผ

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž๋กœ ๋ฌธ์ž์—ด n๊ฐœ๋ฅผ ์ž‡๋Š” ์‹œ๊ฐ„์€ n^2์— ๋น„๋ก€ํ•œ๋‹ค.

  • ๋ฌธ์ž์—ด์€ ๋ถˆ๋ณ€์ด๊ธฐ์— ์—ฐ๊ฒฐํ•  ๊ฒฝ์šฐ ์–‘์ชฝ์˜ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•ด์•ผ๋งŒ ํ•œ๋‹ค.

์žฆ์€ ์—ฐ๊ฒฐ์€ ํ•˜๊ณ  ์‹ถ๊ณ  ์„ฑ๋Šฅ์€ ํฌ๊ธฐํ•˜๊ธฐ ์‹ซ๋‹ค๋ฉด ‘StringBuilder’๋ฅผ ์‚ฌ์šฉํ•˜์ž.

์•„์ดํ…œ 64 : ๊ฐ์ฒด๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•ด ์ฐธ์กฐํ•˜๋ผ

์•„์ดํ…œ 51์—์„œ ๋งค๊ฐœ๋ณ€์ˆ˜ ํƒ€์ž…์œผ๋กœ ‘ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ ์ธํ„ฐํŽ˜์ด์Šค'๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๊ณ  ํ–ˆ๋‹ค.

์ด๋Š” **“๊ฐ์ฒด๋Š” ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ฐธ์กฐํ•˜๋ผ"**๊ณ  ๊นŒ์ง€ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.

์ ํ•ฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์กด์žฌํ•œ๋‹ค๋ฉด ‘๋ฐ˜ํ™˜๊ฐ’, ๋ณ€์ˆ˜, ํ•„๋“œ’ ๋ชจ๋‘ ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ์„ ์–ธํ•˜๋ผ

⇒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์ด ํ›จ์”ฌ ์œ ์—ฐํ•ด์ง„๋‹ค. ๋ณ€๊ฒฝ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ํŒฉํ† ๋ฆฌ๋‚˜ ํ•„์š”ํ•œ ๊ตฌํ˜„์ฒด๋ฅผ ๊ต์ฒดํ•ด์ฃผ๊ธฐ๋งŒ ํ•˜๋ฉด๋œ๋‹ค.

์กฐ๊ฑด

  • ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์•ผํ•œ๋‹ค. (์ œ๊ณตํ•ด์•ผํ•œ๋‹ค)’

์ ํ•ฉํ•œ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์—†๋‹ค๋ฉด ํด๋ž˜์Šค์˜ ๊ณ„์ธต๊ตฌ์กฐ ์ค‘ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์„ ๋งŒ์กฑํ•˜๋Š” ๊ฐ€์žฅ ๋œ ๊ตฌ์ฒด์ ์ธ(์ƒ์œ„์˜) ํด๋ž˜์Šค๋ฅผ ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•˜์ž.

์•„์ดํ…œ 65 : ๋ฆฌํ”Œ๋ ‰์…˜ ๋ณด๋‹ค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ผ

๋ฆฌํ”Œ๋ ‰์…˜ ์žฅ์ 

๋ฆฌํ”Œ๋ ‰์…˜(java.lang.reflect)๋ฅผ ์ด์šฉํ•˜๋ฉด ์ž„์˜์˜ ํด๋ž˜์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ, ํ•„๋“œ, ๋ฉค๋ฒ„ ์ด๋ฆ„, ํ•„๋“œ ํƒ€์ž…, ๋ฉ”์„œ๋“œ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋“ฑ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ์‹ค์ œ ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ, ํ•„๋“œ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์ปดํŒŒ์ผ ์‹œ์— ์กด์žฌํ•˜์ง€ ์•Š์€ ํด๋ž˜์Šค๋„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฆฌํ”Œ๋ ‰์…˜ ๋‹จ์ 

  • ์ปดํŒŒ์ผํƒ€์ž„ ํƒ€์ž… ๊ฒ€์‚ฌ๊ฐ€ ์ฃผ๋Š” ์ด์ ์„ ํ•˜๋‚˜๋„ ๋ˆ„๋ฆด ์ˆ˜ ์—†๋‹ค. (+ ์˜ˆ์™ธ ๊ฒ€์‚ฌ)
  • ๋ฆฌํ”Œ๋ ‰์…˜์„ ์ด์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•˜๊ณ  ์žฅํ™ฉํ•ด์ง„๋‹ค
  • ์„ฑ๋Šฅ์ด ๋–จ์–ด์ง„๋‹ค. ๋ฆฌํ”Œ๋ ‰์…˜์„ ํ†ตํ•œ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ์€ ์ผ๋ฐ˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋ณด๋‹ค ๋Š๋ฆฌ๋‹ค.

๋ฆฌํ”Œ๋ ‰์…˜์€ ์•„์ฃผ ์ œํ•œ๋œ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

  • ์ปดํŒŒ์ผ ํƒ€์ž„์— ์ด์šฉํ•  ์ˆ˜ ์—†๋Š” ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค๋ฉด ๋ฆฌํ”Œ๋ ‰์…˜์€ ์ƒ์„ฑ์—๋งŒ ์“ฐ๊ณ  ์ธ์Šคํ„ด์Šค๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‚˜ ์ƒ์œ„ ํด๋ž˜์Šค๋กœ ์ฐธ์กฐํ•ด ์‚ฌ์šฉํ•˜์ž.

์•„์ดํ…œ 66 : ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋Š” ์‹ ์ค‘ํžˆ ์‚ฌ์šฉํ•˜๋ผ

์„ฑ๋Šฅ ๊ฐœ์„ ์„ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€๋งˆ๋ผ. JVM์€ ์ด๋ฏธ ์—„์ฒญ๋‚˜๊ฒŒ ๋ฐœ์ „ํ•ด์„œ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๋‹ค.

์ž๋ฐ” ๋„ค์ดํ‹ฐ๋ธŒ ์ธํ„ฐํŽ˜์ด๋Š” ์ž๋ฐ” ํ”„๋กœ๊ทธ๋žจ์ด ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ธฐ์ˆ .

  • ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ : C๋‚˜ C++ ๊ฐ™์€ ๋„ค์ดํ‹ฐ๋ธŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ ๋ฉ”์„œ๋“œ

์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•  ๋ชฉ์ ์œผ๋กœ ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ๊ฑฐ์˜ ๊ถŒ์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

  • ๋„ค์ดํ‹ฐ๋ธŒ ๋ฉ”์„œ๋“œ๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š๊ณ , ์ด์‹์„ฑ๋„ ๋‚ฎ๊ณ , ๋””๋ฒ„๊น…๋„ ์–ด๋ ต๋‹ค. ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ํšŒ์ˆ˜ํ•˜์ง€ ๋ชปํ•œ๋‹ค.

๊ผญ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ตœ์†Œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์ฒ ์ €ํžˆ ํ…Œ์ŠคํŠธํ•ด์„œ ์‹ ์ค‘ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ผ.

์•„์ดํ…œ 67 : ์ตœ์ ํ™”๋Š” ์‹ ์ค‘ํžˆ ํ•˜๋ผ

๋น ๋ฅธ ํ”„๋กœ๊ทธ๋žจ๋ณด๋‹ค๋Š” ์ข‹์€ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ

์„ฑ๋Šฅ ๋•Œ๋ฌธ์— ๊ฒฌ๊ณ ํ•œ ๊ตฌ์กฐ๋ฅผ ํฌ์ƒํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.

์ตœ์ ํ™” ๊ฒฉ์–ธ...

‘์ฒซ๋ฒˆ์งธ, ํ•˜์ง€๋งˆ๋ผ, ๋‘๋ฒˆ์งธ, ์•„์งํ•˜์ง€๋งˆ๋ผ, ์™„์ „ํžˆ ๋ช…๋ฐฑํ•˜๊ณ  ์ตœ์ ํ™”๋œ ํ•ด๋ฒ•์„ ์ฐพ์„ ๋•Œ๊นŒ์ง€๋Š” ํ•˜์ง€๋งˆ๋ผ’

๋จผ์ € ์„ค๊ณ„์‹œ API, ๋„คํŠธ์›Œํฌํ”„๋กœํ† ์ฝœ, ์˜๊ตฌ์ €์žฅ์šฉ๋ฐ์ดํ„ฐํฌ๋งท ์‚ฌ์šฉ ์‹œ ์„ฑ๋Šฅ์„ ์—ผ๋‘์— ๋‘ฌ๋ผ. ๊ตฌํ˜„ ํ›„ ์„ฑ๋Šฅ์ด ๋‚˜์˜ค์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ทธ ๋•Œ ์›์ธ์„ ์ฐพ์•„ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ผ.

๋ณ€๊ฒฝ ํ›„์—๋Š” ํ•ญ์ƒ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•ด๋ผ.

์•„์ดํ…œ 68 : ์ผ๋ฐ˜์ ์œผ๋กœ ํ†ต์šฉ๋˜๋Š” ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ผ

์šฐ๋ฆฌ๊ฐ€ ์ž์ฃผ ๋ณด๊ณ  ๊ฒช๊ณ  ์žˆ๋Š” ํ•„๋“œ, ๋ฉ”์„œ๋“œ ๋“ฑ์˜ ๋ช…๋ช…์€ ์ฒดํ™”์‹œํ‚ค๋„๋ก ํ•˜์ž. ํ‘œ์ค€ ๋ช…๋ช… ๊ทœ์น™์„ ๋”ฐ๋ฅด๋ฉด ๋‚˜์™€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๋ช…๋ช… ๊ทœ์น™์— ๋Œ€ํ•ด ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค.