- Type Alias·as import
- 구조분해·componentN
- Jump·Label
- Takeif · TakeUnless
1 . Type Alias·as import
- Type Alias : 긴 이름의 클래스/함수 타입에 별칭을 주는 역할
fun filterFruits(fruits: List<Fruit>, filter: (Fruit) -> Boolean) {} // typealias 사용전
typealias FruitFilter = (Fruit) -> Boolean
fun filterFruits2(fruits: List<Fruit>, filter: FruitFilter) {} // typealias 사용후
data class UltraSuperGuardianTribe(
val name: String,
)
typealias USGTMap = Map<String, UltraSuperGuardianTribe> // 타입에 별칭을 부여할 수 있다.
- as import : 클래스/함수를 임포트 할 때 이름을 바꾸는 기능
| import com.package1.package2. ... printHello as printHelloA import com.package1.package3. ... printHello as printHelloB |
▶ import와 동시에 이름을 바꿀 수 있으며, 서로 다른 패키지 · 같은 함수 이름을 as import를 통해 구분할 수 있다.
2 . 구조분해·componentN
□ 구조분해 : 복합적인 값을 분해하여 여러 변수를 한번에 초기화
data class Person(
val name: String,
val age: Int,
)
fun main() {
val person = Person("홍길동", 20)
val (who, howOld) = person
println("$who, $howOld") // name 과 age에 적절한 변수에 값이 할당이 됨
}
: Data Class는 componentN이란 함수가 자동으로 만들어진다.
□ ComponentN
- val (who, howOld) = person 의 의미는 아래와 같다.
val who = person.component1() // 인스턴스의 첫 번째 프로퍼티를 가져옴
val howOld = person.component2() // 인스턴스의 두 번째 프로퍼티를 가져옴
□ Data Class가 아닐 때 ComponentN 구현
class Person(
val name: String,
val age: Int,
) {
operator fun component1(): String {
return this.name
}
operator fun component2(): Int {
return this.age
}
}
componentN은 연산자의 속성을 가지므로 operator 키워드를 붙여주어야 한다.
※ map을 순회하는 아래 for문도 구조분해를 이용한 코드이다 ((key, value) ...)
val map = mapOf(1 to "one", 2 to "two")
for ((key, value) in map.entries) {
println("$key: $value")
}
3 . Jump·Label
□ Jump
- return, break, continue : 자바와 완전 똑같다
- 단, forEach문에서는 break와 continue를 사용할 수 없다.

- 그러므로 break, continue를 사용하고 싶다면 for문 사용을 추천하되, 굳이 사용하고 싶다면
① continue → @forEach : 코드의 .forEach 타이밍으로 빠져나간다.

② break → run{ @run } 이때 가장 밖에 있는 run 이 loop@와 특정 타이밍을 기록하는 기능을 한다.

□ Label (권장 x)
- 자바의 『loop : 루프이름』과 같은 기능

4 . Takeif · TakeUnless
- 주어진 조건을 만족/불만족 하면 값을 리턴하고 반대의 상황에서는 null을 반환한다.
fun getOrNull(num: Int?): Int? {
return num?.takeIf { it > 0 }
// num?.takeUnless { it <= 0 } 과 같음
}
※ (intellij) 코틀린 코드 자바로 변환
tool > Kotlin > Show Kotlin Bytecode
자바 개발자를 위한 코틀린 입문(Java to Kotlin Starter Guide)| 최태현 - 인프런 강의
현재 평점 5.0점 수강생 3,556명인 강의를 만나보세요. 이 강의를 통해 Kotlin 언어의 특성과 배경, 문법과 동작 원리, 사용 용례, Java와 Kotlin을 함께 사용할 때에 주의할 점 등을 배울 수 있습니다. Ko
www.inflearn.com
'Kotlin > Java to Kotlin Guide' 카테고리의 다른 글
| scope function (0) | 2025.10.10 |
|---|---|
| FP - 컬렉션을 함수형으로 다루는 방법 (0) | 2025.10.09 |
| FP - 람다 (0) | 2025.10.09 |
| FP - 다양한 함수 (0) | 2025.10.09 |
| FP - 배열과 컬렉션 (0) | 2025.10.08 |