inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)

3강. 코틀린에서 Type을 다루는 방법

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

306

RealTake

작성한 질문수 11

2

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

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

 

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

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

java kotlin 객체지향

답변 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이 될 수 있기 때문에 . 대신 ?. 등을 사용하라고 에러를 보내게 됩니다!

 

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

수업노트

0

54

1

싱글톤과 스프링

0

72

2

get() = 3

0

51

2

강사님

0

75

1

강의 복습하면서 생긴 질문

1

95

1

Kotlin과 Java의 현업에서의 활용

0

125

2

data class와 자바의 Lombok을 이용한 DTO 클래스 차이 질문

0

75

1

코틀린에서 상속 시, 주의점에 대한 질문

1

97

3

내용 이해 질문

0

57

1

자바와 코틀린의 함수형 프로그래밍,

1

91

1

플랫폼 타입 설명 문의

2

77

2

널 아님 단언 관련 질문

0

84

1

강의 중 질문

0

80

2

범위 비교 질문

1

92

2

타입캐스팅 궁금한점 질문드립니다.

1

239

2

코틀린 val 질문

0

167

2

완강 후 Kotlin 이런저런 질문 드려봅니다!

3

408

2

확장함수 스타일 질문

0

140

2

확장 프로퍼티 질문

1

157

1

update 함수를 만든다는게 어떤 의미인지 예시가 궁금합니다!

1

283

1

java class의 NotNull 어노테이션 인식

1

264

1

[16강] 확장함수 관련 질문입니다!

1

134

2

리턴타입 사용시 any를 사용해도 괜찮은가요?

1

142

1

안녕하세요 scope function 에 receiver 가 없는 경우

1

172

1