본문 바로가기
프로그래밍 놀이터/Kotlin, Coroutine

[Effective Kotlin] Item 47: Consider using inline classes

by 돼지왕 왕돼지 2022. 6. 8.
반응형

이 글은 Effective Java 를 완독하고, Kotlin 을 상용으로 사용하는 개발자 입장에서
Effective Kotlin 글 중 새로운 내용, remind 할 필요 있는 부분, 핵심 내용 등만 추려 정리한 내용입니다.

 

#
function 뿐만 아니라 single value 를 가진 class 도 inline 될 수 있다.
class 앞에 value 을 붙여주면 된다. (돼왕 : 책에는 inline 으로 나오지만, inline modifier 는 deprecated 되고 value 로 변경되었다.

value class Name(private val value: String){ /../ }

 

#
value class 안에 있는 함수들은 static method 로 치환된다.

 

#
일반적으로 value class 사용시 성능 이슈는 없으며, 쓰임새는 아래와 같다.

  1. unit (단위) 를 나타내기 위함
  2. misuse 를 방지하기 위함

 

 

Indicate unit of measure

 

 

Protect us from type misuse

 

 

Inline classes and interfaces

 

 

Typealias

#
typealias 는 value class 와 그 쓰임새가 비슷해 보이지미나, type misuse 를 방어해주지 못한다.

typealias Second = Int
typealias Millis = Int

fun getTime(): Millis = 10
fun setupTimer(time: Seconds) { /../ }
fun main(){
	val seconds: Seconds = 10
	val millis: Millis = seconds // no compile error
	setupTimer(setupTime())
}

 

 

Summary

 

 

 

반응형

댓글