Kotlin 코틀린
코틀린의 Any 그리고 Any? 대입 비교하기
ktko
2019. 2. 6. 01:44
Any 그리고 Any? 대입에 대해서
코틀린의 최상위 타입은 Any이다. 코틀린에서 타입을 정의할 때 null 안전을 위해 대입이 가능한 프로퍼티에는 명시적으로 ? 를 추가해야 한다. 여기서 궁금한 점은 Any 타입의 프로퍼티는 Any타입에 대입할수 있을까 ? 반대로 Any? 타입으로 선언한 프로퍼티는 Any타입에 대해서 대입할 수 있을까 ?
결과적으로 Any 타입은 Any? 타입에 대입할 수 있지만, 반대로 Any 타입은 Any 타입에 대입할 수 없다.
Any ? <- Any 는 대입 할 수 있다.
Any <- Any? 는 대입할 수 없다.
1 2 3 4 5 6 7 | fun main(args: Array<String>) { val anyValue1: Any = "ktko" val anyValue2: Any? = anyValue1 //대입이 가능하다! val anyValue3: Any? = "ktko" val anyValue4: Any = anyValue3 //Type mismatch. Required: Any Found Any? } |
Any 뿐만아니라 Int 타입에 Int?를 대입하여도 컴파일 에러가 발생한다.