Kotlin

· Kotlin
서론: 자바 개발자가 코틀린을 공부하면서코틀린을 공부하면서 자바와는 다른 방식으로 인터페이스를 활용하는 점이 상당히 생소하게 느껴졌습니다. 자바의 인터페이스는 주로 구현해야 할 메서드를 정의하는 추상적인 설계도, 즉 규격의 역할을 담당합니다. 예를 들어 Spring AOP를 적용할 때 특정 인터페이스 기준으로 Aspect를 설정하고, 해당 인터페이스를 구현한 클래스들에만 선택적으로 공통 로직을 적용하는 용도로 활용할 수 있습니다. 이 경우 인터페이스는 구조를 식별하기 위한 경계로 사용됩니다. 반면 코틀린의 인터페이스는 이러한 규격의 역할에 머무르지 않습니다. 자바의 인터페이스는 "무엇을 구현해야 하는가"에 초점을 맞췄다면 코틀린의 인터페이스는 어떤 행위를 조합할 수 있는 가에 초첨을 두어 한 단계 확장되..
· Kotlin
Kotlin in Action 2/e 서적을 읽으면서 정리하고자 쓴 글입니다. 널 가능성코틀린을 비롯한 최신 언어는 `null`에 대한 문제를 런타임 시점에서 컴파일 시점으로 옮겼습니다. 널이 될 수 있는지 확인하는 타입 시스템을 추가함으로써 컴파일러가 여러 가지 오류를 컴파일 시 미리 감지하여 런타임에 발생할 수 있는 예외 가능성을 줄일 수 있습니다. 안전한 호출 연산자(Safe Call Operator): ?.`?.`는 `null` 검사와 메서드 호출을 한 번의 연산으로 수행합니다. 왼쪽 값이 `null`이면 즉시 `null`을 반환하고, `null`이 아닐 때만 오른쪽을 실행합니다.s?.toUpperCase() // s 문자열 대문자 변환 (아래와 동일하게 동작한다.)if (s != null) s...
· Kotlin
Kotlin in Action 2/e 서적을 읽으면서 정리하고자 쓴 글입니다.람다 식과 멤버 참조람다와 컬렉션코틀린은 람다를 보다 직관적으로 사용할 수 있으며, 간결한 코드를 작성할 수 있습니다.fun findTheOldest(peoples: List) { var maxAge = 0 for (person in peoples) { if (person.age > maxAge) { maxAge = person.age } } return maxAge}fun main() { val peoples = listOf(Person("A", 10), Person("B", 15)) println(findTheOlest(peoples)) // 15}..
· Kotlin
Kotlin in Action 2/e 서적을 읽으면서 정리하고자 쓴 글입니다.코틀린의 클래스와 인터페이스는 설계 단계부터 안정성과 간결함을 중시하도록 설계되었습니다. 인터페이스 내에 프로퍼티 선언이 가능해 구현체에 특정 상태를 강제할 수 있으며, 자바와 달리 모든 선언이 기본적으로 `public`이면서 동시에 상속이 제한된 `final` 상태라 의도치 않은 확장을 방지합니다. 또한 중첩 클래스는 별도의 키워드 없이 선언할 경우 외부 클래스에 대한 참조를 갖지 않아 메모리 누수 위험을 줄여줍니다. 클래스를 data 즉, `data class`로 선언하면 컴파일러가 일부 표준 함수를 생성해 주며, `by` 키워드를 활용한 위임 기능을 제공함으로써 개발자가 반복적이고 번거로운 준비 코드를 직접 작성할 필요 없..
· Kotlin
Kotlin in Action 2/e 서적을 읽으면서 정리하고자 쓴 글입니다.코틀린에서 컬렉션 만들기코틀린은 다음과 같이 컬렉션을 생성하는 함수를 제공합니다.또한 코틀린은 표준 자바 컬렉션 클래스를 사용하기 때문에 자바 코드와 상호작용하기가 훨씬 더 쉽습니다.즉, 자바 → 코틀린 또는 코틀린 → 자바 함수를 호출할 때 컬렉션을 서로 변환할 필요가 없습니다.fun main() { val set = setOf(1, 7, 10) val list = listOf(1, 10, 100) val map = mapOf(1 to "one", 7 to "seven", 10 to "ten") // ex) key=1, value="one" println(set.javaClass) // class ..
· Kotlin
Kotlin in Action 2/e 서적을 읽으면서 정리하고자 쓴 글입니다.함수와 변수(Variables)Java, Kotlin 각각 `Hello, world` 출력 함수를 출력하면 다음과 같습니다.// Javapublic class Main { public static void main(String[] args) { System.out.println("Hello, world"); }}// Kotlinfun main(args: Array) { println("Hello, world")}함수 선언을 할 때 `fun` (파라미터 이름: 파라미터 타입) 키워드를 사용합니다.Java의 경우 메서드를 호출하기 위해 클래스를 선언 후 작성해야 하지만 Kotlin의 함수는 클래스 생성 없이 ..
· Kotlin
Kotlin in Action 2/e 서적을 읽으면서 정리하고자 쓴 글입니다.왜 JetBrains는 Kotlin을 만들었는가JetBrains는 IntelliJ IDEA를 만든 회사로 내부 서비스와 툴 대부분 Java로 이루어져 있으며 다음과 같이 불편이 누적되었습니다.Java의 장황한 문법 (Boilerplate)안전하지 않는 Null 처리더 생산적이고 간결한 코드에 대한 실용적인 요구 증가 (모던한 방식)C#처럼 모던한 방식을 원했고, 기존 Java로 이뤄진 코드를 호환할 수 있는 언어를 찾아보았으나 그러한 언어가 없었습니다. 그렇게 JetBrains는 Java와 호환성이 좋고, 모던함을 갖추고자 실용적인 언어 Kotlin을 만들기로 결정합니다.더보기Kotlin은 코틀린 개발 팀이 대부분 살고 있는 러..
Hui._.
'Kotlin' 카테고리의 글 목록