[Effective Kotlin] 아이템 4. inferred 타입으로 리턴하지 말라

Jimin Lim·2023년 7월 16일
0

Effective Kotlin

목록 보기
4/39
post-thumbnail

아이템 4

inferred 타입으로 리턴하지 말라

✅ inferred 타입

코틀린은 타입 추론(inferred 타입)을 허용하므로, 아래와 같은 문제가 발생할 수 있다.

open class Animal
class Zebra: Animal()

fun main() {
	//Type mismatch, 상위로 추론되지 않음
    var animal = Zebra()
    animal = Animal()
    
    //타입 지정
    var animal: Animal = Zebra()
    animal = Animal()
}

따라서 타입을 명시적으로 지정해주는 것이 좋다.

✅ 문제점

타입추론만을 허용한다면, 하위 클래스로만 지정되므로 유연성을 잃는 문제가 말생한다.

interface CarFactory {
    fun produce() = DEFAULT_CAR
}

var DEFAULT_CAR: Car = Fiat126P()

위 코드에서 var DEFAULT_CAR = Fiat126P() 와 같이 타입 추론을 사용한다면, CarFactory에서는 Fiat126P() 외에는 생성할 수 없게 된다.

interface CarFactory {
    fun produce(): Car
}

따라서 위와 같이 타입추론을 허용해줄 필요가 있다.

profile
💻 ☕️ 🏝 🍑 🍹 🏊‍♀️

2개의 댓글

comment-user-thumbnail
2023년 7월 16일

잘봤습니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기