• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

[3강] as {클래스} 형 변환의 Nullable 건에 대하여

24.03.09 21:09 작성 조회수 85

1

안녕하세요! 강의 잘보고있습니다! 3강을 보다 질문? 의문? 같은게 들었습니다.

fun printAgeIfPerson(obj: Any?) {
    val person = obj as Person
    println(person.age)
}

 

아래 코드에서 매개변수 obj의 값으로 null이 들어온 경우 제 생각으로는 val person: Person? 형태로 추론이 되어

person.age 부분에서 ide가 처음부터 오류를 표시해주는게 맞다고 생각이 되었습니다ㅜ. 선생님께서는 어떻게 생각하시는지 궁금합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요 RealTake님! 🙂 좋은 질문 감사합니다!

코틀린에서는 널이 가능한 타입과 널이 불가능한 타입을 확실하게 구분한다는 특징이 있는데요!

만약 obj 가 null일 경우에 person에 들어갈 수 있는 Person? 타입으로 추론되게 하고 싶으시면,

obj as Person 대신 obj as Person? 을 사용하실 수 있습니다.

val person = obj as Person?

 

즉, 우리가 obj as Person 으로 작성했기 때문에 null이 들어왔을 때 val person = obj as Person 에서 컷(?) 당하는 거에요!

만약 우리가 obj as Person? 으로 작성했다면 말씀해주신 것처럼

null이 들어와도 person.age 쪽으로 코드가 넘어갈 수 있게 되고, 이때 person 은 null이 될 수 있기 때문에 . 대신 ?. 등을 사용하라고 에러를 보내게 됩니다!

 

답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏