🔍Kotlin

· 🔍Kotlin
제네릭 타입 파라미터 코틀린에서는 자바와는 달리, 제네릭 타입의 타입 인자를 프로그래머가 명시하거나 컴파일러가 추론할 수 있어야 합니다. // 1. 컴파일러 타입 추론 val authors = listof("A", "B") // 2. 변수 선언쪽에 타입 선언 val readers: MutableList = mutableListOf() // 3. 변수를 만드는 함수의 타입인자 지정 val readers = mutableListOf() 1. 제네릭 함수 fun List.slice(indices: IntRange): List 제네릭 함수의 타입 파라미터 T를 선언합니다. 2. 제네릭 확장 프로퍼티 val List.penultimate: T 3. 제네릭 클래스 선언 interface List { operator..
· 🔍Kotlin
Field 필드 / Property 프로퍼티 자바에서는 필드와 접근자 메서드를 묶어 프로퍼티라고 지칭한다. 코틀린에서는 필드에 대한 기본 접근자 메서드를 자동으로 만들어주기 때문에 필드 대신 프로퍼티라는 말을 사용한다. Backing Field 프로퍼티의 값을 메모리에 저장하기 위한 필드 대부분의 프로퍼티에는 backing field 가 존재하지만 원한다면 프로퍼티 값을 메모리에 저장하지 않고 바로바로 계산하도록도 할 수 있다 프로퍼티를 선언해줄 때 다음 조건을 만족시킨다면 (메모리에 저장할 필요가 있어지기 때문에) 자동으로 backing field 가 생김 적어도 하나의 접근자가 기본으로 구현되는 접근자를 사용하는 경우 커스텀 접근자가 field 키워드를 통해 backing field 를 참조하는 경우..
· 🔍Kotlin
코틀린이 자바로 컴파일될 때, 그 컴파일 방식이 성능에 영향을 미칩니다. 특히 람다를 파라미터로 전달하는 경우에 대해서 자세히 살펴보겠습니다. 코틀린은 람다를 무명 클래스로 컴파일한다 // 람다 - 무명 객체를 메서드를 호출할 때마다 반복 사용 postponeComputation(1000) {println(42)} // 람다를 컴파일한다면? 무명 인스턴스가 생성됨 postponeComputation(1000, object: Runnable { override fun run() { println("hello") } } ) 코틀린은 기본적으로 람다를 무명클래스로 컴파일하지만 항상 새로운 무명 클래스를 생성하는 것은 아닙니다. 위의 경우는 항상 인스턴스가 생성되지만 사실은 아래와 같이 클래스를 한 번만 생성하..
kkyu0718
'🔍Kotlin' 카테고리의 글 목록