[TIL/Kotlin] 코틀린 고급문법_Nullable 리시버, 동반자 객체의 확장 함수, 확장 함수의 리시버 타입이 상속 관계에 있을 때 참조 변수를 따른다

2023. 5. 17. 10:47·TIL/Kotlin
728x90
반응형

1. Nullable 리시버

리시버 타입에 ?가 붙어 있는 것이 Nullable 리시버이다.

확장 함수를 응용하면, 참조 변수에 null이 지정되어 있어도 함수 호출이 가능하게 할 수 있다.

(Nullable 타입으로도 멤버 함수를 호출할 수 있다)

fun String?.isNumber(){
    if(this == null) {
        println("문자열이 null입니다.")
    }
}

fun main() {
    val empty: String? = null
    empty.isNumber()
}

 

확장 함수 참고

https://yelin1217.tistory.com/425

 

[TIL/Kotlin] 코틀린 중급문법_접근지정자, 접근지정자 오버라이딩, 확장 함수, 확장 프로퍼티

1. 접근 지정자 코틀린에서 선언 가능한 요소(함수, 전역변수, 클래스, 프로퍼티, 멤버함수 등) 중, 일부 요소에는 접근 권한이라는 것을 지정할 수 있다. 이를 접근 지정자 또는 가시성 지정자라

yelin1217.tistory.com


2. 동반자 객체의 확장 함수

확장 함수를 다음과 같이 선언하면 동반자 객체에도 확장 함수를 달 수 있다.

fun 클래스 이름.Companion.함수 이름() {
}

 

동반자 객체는 클래스 이름만으로 접근할 수 있지만, 확장 함수를 선언할 때 그렇게 하면 동반자 객체가 아닌 클래스 자체에 멤버 함수가 추가되므로 Companion 식별자를 반드시 적어줘야 한다.

// 빈 동반자 객체 정의
class Person{ companion object }

// 동반자 객체에 create 함수 주입
fun Person.Companion.create() = Person()

// Person 클래스의 동반자 객체에 주입된 create 함수를 호출
fun main() = Person.create()

3. 확장 함수의 리시버 타입이 상속 관계에 있을 때

확장 함수의 리시버 타입이 상속 관계에 있을 때 멤버 함수와 다르게 참조 변수가 실제로 가리키는 객체의 타입을 따르지 않고 참조 변수의 타입을 그대로 따른다.

open class AAA; class BBB: AAA()

fun AAA.hello() = println("AAA")
fun BBB.hello() = println("BBB")

fun main() {
    val test: AAA = BBB()
    test.hello() // AAA
}

 

728x90
반응형

'TIL > Kotlin' 카테고리의 다른 글

[TIL/Kotlin] 코틀린 고급문법_중첩 클래스와 내부 클래스  (0) 2023.05.21
[TIL/Kotlin] 코틀린 고급문법_추상 클래스, 인터페이스, 다이아몬드문제(상속구현문제)  (0) 2023.05.17
[TIL/Kotlin] 코틀린 고급문법_inline 함수, const, lateinit  (0) 2023.05.17
[TIL/Kotlin] 코틀린 고급문법_객체 선언과 동반자 객체  (0) 2023.05.17
[TIL/Kotlin] 코틀린 중급문법_접근지정자, 접근지정자 오버라이딩, 확장 함수, 확장 프로퍼티  (0) 2023.05.14
'TIL/Kotlin' 카테고리의 다른 글
  • [TIL/Kotlin] 코틀린 고급문법_중첩 클래스와 내부 클래스
  • [TIL/Kotlin] 코틀린 고급문법_추상 클래스, 인터페이스, 다이아몬드문제(상속구현문제)
  • [TIL/Kotlin] 코틀린 고급문법_inline 함수, const, lateinit
  • [TIL/Kotlin] 코틀린 고급문법_객체 선언과 동반자 객체
야리니
야리니
오늘보다 내일 더 성장하는 개발자가 되기 위한 야리니 블로그입니다 :)
    반응형
    250x250
  • 야리니
    야리니의 step by step
    야리니
  • 링크

    • GitHub
    • Linkedin
  • 전체
    오늘
    어제
    • 분류 전체보기 (478) N
      • TIL (379)
        • Java (97)
        • Kotlin (28)
        • JPA (16)
        • Spring (37)
        • Oracle (22)
        • JDBC (7)
        • Web(HTML, CSS, JS, jQuery) (90)
        • View Template (31)
        • AWS (7)
        • HTTP (7)
        • CS (5)
        • Linux, Unix (2)
        • Python (20)
      • Trouble Shooting(Error) (37)
      • Algorithm (15)
      • Git,GitHub (8)
      • Diary (24) N
      • 독서 (9)
      • Etc (6)
        • Mac (1)
        • 학원준비과정 (2)
  • 블로그 메뉴

    • 방명록
    • 태그
  • 공지사항

    • 안녕하세요 :)
  • 인기 글

  • 태그

    java
    Kotlin
    oracle
    백엔드 개발자
    코틀린
    CSS
    쌍용교육센터
    java기초
    HTML
    국비지원학원
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
야리니
[TIL/Kotlin] 코틀린 고급문법_Nullable 리시버, 동반자 객체의 확장 함수, 확장 함수의 리시버 타입이 상속 관계에 있을 때 참조 변수를 따른다
상단으로

티스토리툴바