아이템 4 - inferred 타입으로 리턴하지 말라

ds_chanin

·

2022. 2. 28. 21:17


코틀린은 타입추론을 지원한다. 이 때 주의할 점이 있다.

먼저 추론된(inferred)타입은 정확하게 오른쪽에 있는 피연산자에 맞게 설정된다. 따라서 슈퍼클래스 혹은 인터페이스로 설정되지 않음을 기억해야한다. 따라서 원하는 타입보다 제한된 타입으로 설정됐다면 명시적으로 타입을 지정해주어야 한다.

외부에 제공하는 라이브러리의 인터페이스 반환 타입을 명시적으로 지정하다 제거해버리면 사용을 하는 쪽에서 문제가 발생 할 수 있다. 따라서 안전을 위해 외부 제공 API를 만드는 경우 반드시 타입을 지정하고, 지정한 타입을 변경하거나 제거하지 않아야 한다.

책에서 나온 예시와 같이 명시적 타입을 제거함으로써 인터페이스 구현체에서 더 이상 Car가 아닌 Ferrari 구현체만 반환하는 인터페이스가 되버린다.

결론

타입을 확실하게 지정해야 하는 경우 명시적으로 타입을 지정하고 변경, 제거하지 말라