코틀린 platform type 데이터 타입?

0

Kotlin

목록 보기
24/32

val awsUserId = SecurityContextHolder.getContext().authentication.name
val awsUserId: String = SecurityContextHolder.getContext().authentication.name

  • 코틀린은 스마트 캐스팅이 됨.
    하지만 SecurityContextHolder는 자바 클래스임.
    자바 클래스 -> 코틀린이 아닌 타입을 platform type라고 하는데, platform type은 타입을 선언해주는게 좋음. String이라고 해주면 NullSafety가 아니기 때문에 여기서 nullpointerException이 남.
    아니면 나중에 awsUserId를 호출할 때 nullpointerException이 날 것임.
    디버깅 하기 좋음
  • 그래서 nullpointerException이 나도록 강제적으로 하는 방법은 명시적으로 선언하는 방법(: String) / 강제로 캐스팅 하는 방법 (!!)
    두개가 있는데,
    여기서 코틀린 제외하고서도 다른 언어에서도 지역변수 안에서는 최대한 타입 쓰지 않는걸 추천한다고 함.
    어차피 두개의 결과는 동일함. 근데 또 !!는 안쓰는게 좋음.....(:<)
profile
백엔드를 공부하고 있습니다.

0개의 댓글