[Kotlin] object ํ‚ค์›Œ๋“œ

์—…๋ฐ์ดํŠธ:

๐Ÿ“ฎ ์ฝ”ํ‹€๋ฆฐ object ํ‚ค์›Œ๋“œ ๐Ÿ’Œ

์—ญ์‹œ๋‚˜ ํ˜ผ์ž์„œ ๊ณต๋ถ€ํ•  ๋•Œ๋Š” ์ง€๋…์Šค๋Ÿฝ๊ฒŒ ์ง„๋„๊ฐ€ ์•ˆ๋‚˜๊ฐ€๋”๋‹ˆ ํšŒ์‚ฌ์—์„œ ์‹ ๊ทœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ฝ”ํ‹€๋ฆฐ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๋ฐœ๋“ฑ์— ๋ถˆ ๋–จ์–ด์ ธ ์ฝ”ํ‹€๋ฆฐ ๊ณต๋ถ€์ค‘์ด๋‹ค. ๐Ÿ˜‚
์‚ฌ์‹ค ๊ณต๋ถ€๋ณด๋‹ค๋„ ์‹ค๋ฌด์—์„œ ๋‹น์žฅ ์‚ฌ์šฉํ•ด์•ผ ๋ผ์„œ ์ผ๊ณผ ๋™์‹œ์— ๋ชจ๋ฅด๋Š” ์‚ฌํ•ญ ์„œ์น˜ํ•˜๋ฉด์„œ ์—…๋ฌด ์ค‘โ€ฆ(๊ฑฐ์˜ ๋‹ค ๋ชจ๋ฅด๋Š”๊ฒŒ ํ•จ์ •) ์ฝ”ํ‹€๋ฆฐ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์ฐจ๊ทผ์ฐจ๊ทผ ํฌ์ŠคํŒ… ํ•˜๋ ค ํ–ˆ์œผ๋‚˜ ๋‹น์žฅ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ชจ๋ฅด๋Š” ๋‚ด์šฉ๋“ค์„ ํฌ์ŠคํŒ… ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ฐฉํ–ฅ์„ ๋ฐ”๊ฟจ๋‹ค.
ย 

์ฝ”ํ‹€๋ฆฐ์—์„œ๋Š” object ํ‚ค์›Œ๋“œ๋ฅผ ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์—์„œ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๋ชจ๋“  ๊ฒฝ์šฐ ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•˜๋ฉด์„œ ๋™์‹œ์— ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด)๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋Š” ๊ณตํ†ต์ ์ด ์žˆ๋‹ค. ๋‹ค์Œ์€ object ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ์ƒํ™ฉ์ด๋‹ค.
ย 


๐Ÿ•น ๊ฐ์ฒด ์„ ์–ธ, ์‹ฑ๊ธ€ํ„ด ์ •์˜

  • ์ž๋ฐ”์—์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜๋งŒ ํ•„์š”ํ•œ ํด๋ž˜์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ •์ (static) ํ•„๋“œ์— ํด๋ž˜์Šค์˜ ์œ ์ผํ•œ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋Š” ์‹ฑ๊ธ€ํ„ด ํŒจํ„ด์„ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ฝ”ํ‹€๋ฆฐ์€ ๊ฐ์ฒด ์„ ์–ธ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ์‹ฑ๊ธ€ํ„ด์„ ์–ธ์–ด์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ง€์›ํ•œ๋‹ค.
  • ์‹ฑ๊ธ€ํ„ด ์„ ์–ธ์€ object ํ‚ค์›Œ๋“œ๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๋˜๊ณ , ์ƒ์„ฑ์ž ํ˜ธ์ถœ ์—†์ด ์ฆ‰์‹œ ๋งŒ๋“ค์–ด์ง„๋‹ค.
object DataSample {}

// kotlin์—์„œ ์‚ฌ์šฉ
val dataSample = DataSample

// java์—์„œ ์‚ฌ์šฉ
DataSample dataSample = DataSample.INSTANCE;

ย 

๐Ÿ•น ๋™๋ฐ˜ ๊ฐ์ฒด, static ๋ฉค๋ฒ„ ์„ ์–ธ

  • ์ฝ”ํ‹€๋ฆฐ ํด๋ž˜์Šค ์•ˆ์—๋Š” ์ •์ ์ธ ๋ฉค๋ฒ„๊ฐ€ ์—†๋‹ค. ์ž๋ฐ” static ํ‚ค์›Œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋Œ€์‹  ํด๋ž˜์Šค ๋ฐ”๊นฅ์— ์„ ์–ธํ•˜๋Š” ์ตœ์ƒ์œ„ ํ•จ์ˆ˜์™€ ๊ฐ์ฒด ์„ ์–ธ์„ ํ™œ์šฉํ•œ๋‹ค.
  • ์ตœ์ƒ์œ„ ํ•จ์ˆ˜๋Š” private ๋น„๊ณต๊ฐœ ๋ฉค๋ฒ„์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.
  • ํด๋ž˜์Šค ์•ˆ์— companion object ์ •์˜ํ•˜๋ฉด, ๊ทธ ํด๋ž˜์Šค์˜ ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
    ย 

๐Ÿ•น companion object ์‚ฌ์šฉ

  • ๋™๋ฐ˜ ๊ฐ์ฒด์— ์ด๋ฆ„ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค. (์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ์ž๋™์œผ๋กœ Companion)
  • ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„
  • ํ™•์žฅ ํ•จ์ˆ˜์™€ ํ”„๋กœํผํ‹ฐ ์ •์˜
  • ํŒฉํ† ๋ฆฌ ๋ฉ”์„œ๋“œ ๊ตฌํ˜„
    ย 

๐Ÿ•น ์ต๋ช…ํด๋ž˜์Šค ๊ตฌํ˜„

  • ๋ฌด๋ช… ๊ฐ์ฒด(anonymous object) ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ
  • ์ž๋ฐ”์™€ ๋‹ฌ๋ฆฌ final์ด ์•„๋‹Œ ๋ณ€์ˆ˜๋„ ๊ฐ์ฒด ์‹ ์•ˆ์—ฃ์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
    ย 

companion object์˜ ์“ฐ์ž„์€ ๋‚˜์ค‘์— ๋” ์•Œ์•„๋ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค. object ํ‚ค์›Œ๋“œ๋Š” ์—ฌ๊ธฐ๊นŒ์ง€.

ย 
ย 
[์ฐธ๊ณ ]
https://0391kjy.tistory.com/29
Kotlin in action

ํƒœ๊ทธ:

์นดํ…Œ๊ณ ๋ฆฌ:

์—…๋ฐ์ดํŠธ: