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
}
따라서 위와 같이 타입추론을 허용해줄 필요가 있다.
잘봤습니다.