[3강] as {클래스} 형 변환의 Nullable 건에 대하여
306
작성한 질문수 11
안녕하세요! 강의 잘보고있습니다! 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이 될 수 있기 때문에 . 대신 ?. 등을 사용하라고 에러를 보내게 됩니다!
답변이 도움이 되었으면 좋겠습니다. 감사합니다! 🙏
수업노트
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





