Chandroid
Android Development Diary
Chandroid
전체 방문자
오늘
어제
  • 분류 전체보기
    • Today I Learned (TIL)
    • Android
      • Android Weekly
      • Android 13
      • Android Debug Bridge (ADB)
      • Library
      • View
      • Jetpack
      • Gist
    • Kotlin
      • Docs
      • Clean Code
    • Object-Oriented Programming
    • Etc
      • 정보처리기사 실기
      • 주절주절

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • Android 13
  • Sealed classes
  • Today I Learned
  • Database
  • Agile Software
  • Realm
  • GIST
  • RecyclerView
  • DataBinding
  • Data classes
  • OOP
  • customview
  • Android
  • til
  • ADB
  • clean code
  • kotlin
  • Kotlin Docs
  • Extensions
  • MVVM
  • Glide
  • generics
  • Android Debug Bridge
  • DiffUtil
  • Solid

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Chandroid

Android Development Diary

[Kotlin Docs] Functional (SAM) interfaces
Kotlin/Docs

[Kotlin Docs] Functional (SAM) interfaces

2022. 2. 17. 23:52

본 글은 https://kotlinlang.org/docs/home.html 를 기반으로 작성자 마음대로 번역한 글입니다.
오역 & 의역이 빈번하며 모든 질문 및 태클 환영합니다!
2022-02-17 기준으로 작성되었습니다.

하나의 추상 메소드만 가지는 인터페이스를 functional interface 혹은 Single abstract Method (SAM) interface라고 부릅니다. 함수형 인터페이스는 추상이 아닌 멤버는 여러개 가질 수 있지만 추상 멤버는 하나만 가질 수 있습니다.

 

코틀린에서 함수형 인터페이스를 선언하기 위해서, fun 지시자를 사용하세요.

 

 

SAM conversions

함수형 인터페이스는, lambda expressions↗을 사용하여 코드를 보다 간결하고 가독성 있게 도와주는 SAM 변환을 사용할 수 있습니다.

 

함수형 인터페이스를 정석으로 구현하여 클래스를 만드는 대신, 람다식을 사용할 수 있습니다. 코틀린에서 SAM 변환을 사용하여 인터페이스의 단일 메소드의 시그니쳐와 일치하는 람다식을 인터페이스 구현을 동적으로 인스턴스화 할 수 있도록 변환할 수 있습니다. 

 

예를 들어, 다음 코틀린 함수형 인터페이스를 살펴보겠습니다.

 

 

SAM 변환을 사용하지 않는다면, 코드를 다음과 같이 작성해야 합니다.

 

 

코틀린의 SAM 변환을 사용하면 같은 코드를 이렇게 작성할 수 있습니다.

 

 

짧은 람다식은 모든 불필요한 코드를 대체할 수 있습니다.

 

 

SAM conversions for Java interfaces↗

 


Functional interfaces vs. type aliases

함수형 인터페이스와 type alises↗는 다른 목적을 수행합니다. 타입 별칭은 그저 존재하는 타입에 대한 이름일 뿐입니다 - 함수형 인터페이스와 다르게 새로운 타입을 생성하지 않습니다. 특정한 함수형 인터페이스에 고유한 확장 함수를 제공하여 일반 함수 또는 타입 별칭에 사용할 수 없도록 할 수 있습니다.

 

함수형 인터페이스가 여러개의 비추상 멤버를 가지거나 하나의 추상 멤버를 가지는 것과 다르게 타입 별칭은 하나의 멤버만을 가집니다. 함수형 인터페이스는 다른 인터페이스를 구현하거나 확장할 수 있습니다.

 

함수형 인터페이스는 타입 별칭보다 유연하며 더 많은 기능을 제공하지만, 특정한 인터페이스로의 변환이 필요할 수 있으므로 구문적으로나 런타임에 비용이 많이 소모될 수 있습니다. 코드에서 사용할 것을 선택할 때, 필요를 고려해야 합니다.

 

  • API가 특정 매개변수와 리턴 타입을 가지는 함수(임의의 함수)를 허용해야 하는 경우 - 단순 함수 유형을 사용하거나 타입 별칭을 정의하여 해당 함수 타입에 짧은 이름을 지정합니다.
  • API가 함수보다 복잡한 엔티티를 허용하는 경우 - 예를 들어, 함수 유형의 시그니쳐로 표현될 수 없는 중요한 동작을 포함한 경우 - 별개의 함수형 인터페이스를 선언하세요.

https://kotlinlang.org/docs/fun-interfaces.html
 

Functional (SAM) interfaces | Kotlin

 

kotlinlang.org

 

저작자표시 비영리 (새창열림)

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

[Kotlin Docs] Extensions  (0) 2022.04.07
[Kotlin Docs] Visibility modifiers  (0) 2022.02.24
[Kotlin Docs] Interfaces  (0) 2022.02.04
[Kotlin Docs] Properties  (0) 2022.02.03
[Kotlin Docs] Inheritance  (0) 2022.01.24
    Chandroid
    Chandroid

    티스토리툴바