본문 바로가기

kotlin43

[코틀린/Kotlin] SAM - Java 표준 API SAM; Single Abstract Method단 하나의 추상 메서드만 가진 인터페이스 또는 추상 클래스Java에서는 주로 함수형 인터페이스(Fuctional Interface)라고 호칭Kotlin에서도 Java 함수형 인터페이스와 함께 사용할 때 SAM 변환을 지원함수형 인터페이스 (java.util.function 패키지)Java 8부터 추가된 함수형 인터페이스Kotlin에서 람다로 사용 가능Function입력값: T반환값: Rval f: (Int) -> String = Function { i -> "값: $i" }println(f(10)) // 값: 10Consumer입력값: T반환값: 없음val printer: Consumer = Consumer { println(it) }printer.acce.. 2025. 9. 12.
[코틀린/Kotlin] SAM; Single Abstract Method SAM; Single Abstract Method단 하나의 추상 메서드만 가진 인터페이스 또는 추상 클래스Java에서는 주로 함수형 인터페이스(Fuctional Interface)라고 호칭Kotlin에서도 Java 함수형 인터페이스와 함께 사용할 때 SAM 변환을 지원JAVA@FunctionalInterfaceinterface Runnable { void run();}Runnable 인터페이스: 추상 메서드 run() 하나[Java8 이후 람다 구현 가능]public class Main { public static void main(String[] args) { Runnable task = () -> System.out.println("Hello from Runnable"); .. 2025. 9. 10.
[코틀린/Kotlin] enum / enum class enum열거형; enumeration여러 개의 이름이 붙은 상수를 하나의 타입으로 묶어서 표현상수 값이 미리 정해져있고, 컴파일 시점에 확정일반 enum상수 목록만 정의: 추가 메서드나 프로퍼티 없음각 상수는 고유한 값을 가짐보통 switch-case나 조건문에서 사용Java에서의 enumpublic enum Direction { NORTH, SOUTH, EAST, WEST}class Main { public static void main(String[] args) { Direction dir = Direction.NORTH; System.out.println(dir); // NORTH }}Direction 타입의 변수는 4개의 값 중 하나만 가짐.. 2025. 9. 8.
[코틀린/Kotlin] qualifiedName qualifiedNameKotlin 리플렉션(reflection)에서 클래스의 전체 이름패키지 + 클래스 이름val clazz = String::classprintln(clazz.qualifiedName) // 출력: kotlin.String개념qualifiedName패키지 이름 + 클래스 이름E.g.) com.example.MyClasssimpleName클래스 이름E.g.) MyClassval clazz = MyClass:classprintln(clazz.qualifiedName) // 예: com.example.MyClassprintln(clazz.simpleName) // 예: MyClass사용 예시로깅/디버깅 시 클래스 전체 경로 사용직렬화/역직렬화(Serialization)시 클래스 이름 저장D.. 2025. 9. 6.
[코틀린/Kotlin] 로컬 클래스(Local Class) 로컬 클래스(Local Class)함수 또는 블록 내부에 선언된 클래스외부에는 보이지 않으며 해당 함수 내부에서만 사용 가능예시fun exampleFunction() { class LocalUser(val name: String) { fun sayHello() { println("Hello, my name is $name") } } val user = LocalUser("희우") user.sayHello() // 출력: Hello my name is 희우LocalUser은 exampleFunction 내부에서만 정의되고 사용용도특정 함수 안에서만 사용하는 간단한 구조외부에 노출하지 않으면서 캡슐화복잡한 로직을 분리하여 가독성을 높히기예시fun processNumbers(numbers: List).. 2025. 9. 5.
[코틀린/Kotlin] 익명 클래스(Anonymous Class) 익명클래스(Anonymous Class)객체를 이름 없이 생성하는 방식인터페이스나 추상 클래스를 일시적으로 구현하거나 확장Java의 익명 내부 클래스와 비슷한 개념개념이름이 없는 클래스일회성으로 필요한 동작을 정의할 때 사용e.g.) 리스너, 콜백, 인터페이스 구현사용 예시버튼 클릭 이벤트 리스너를 설정할 때일회용 객체가 필요할 때콜백 처리를 간단하게 하고 싶을 때예시interface ClickListener { fun onClick()}val listener = object: ClickListener { override fun onClick() { println("Clicked!") }}listener.onClic() // 출력: Clickced!object: ClickListner { … }는 Cl.. 2025. 9. 4.