Study
-
12-2. 자바 상호 운용성 : 코틀린 코드를 자바에서 사용하기Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 12. 4. 17:42
12장 12-1. 자바 상호 운용성 : 자바 코드를 코틀린에서 사용하기 12-2. 자바 상호 운용성 : 코틀린 코드를 자바에서 사용하기 12-2. 코틀린 코드를 자바에서 사용하기 1) 프로퍼티 접근 자바나 JVM에는 프로퍼티라는 개념이 없으므로 코틀린 프로퍼티를 자바에서 직접 접근할 수는 없지만, 자바 클라이언트는 접근자 메서드를 통해 프로퍼티에 접근할 수 있다. 접근자의 시그니처는 아래와 같은 규칙에 따라 프로퍼티의 정의에서 만들어진다. ● 게터는 파라미터가 없는 메서드이며 게터의 반환 타입은 원래의 프로퍼티 타입과 같다. 게터의 이름은 프로퍼티 이름의 첫 번째 글자를 대문자로 바꾼 다음, 앞에 get을 붙여서 생성된다. ● 세터는 새로운 값에 해당하는 파라미터를 하나만 받는 메서드다. 세터의 이름은 ..
-
12-1. 자바 상호 운용성 : 자바 코드를 코틀린에서 사용하기Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 12. 3. 14:32
12장 12-1. 자바 상호 운용성 : 자바 코드를 코틀린에서 사용하기 12-2. 자바 상호 운용성 : 코틀린 코드를 자바에서 사용하기 12장은 자바와 코틀린의 상호 운용성에 관한 내용이다. 이런 주제는 자바 코드와 코틀린 코드가 공존해야 하는 프로젝트에서 중요한 역할을 한다고 한다. 코틀린과 자바 타입이 서로 어떻게 매핑되는지 살펴보고, 코틀린 선언을 자바에서 보면 어떤 식으로 보이는지, 반대로 자바 선언을 코틀린에서 어떻게 바라보는지 설명한다. 자바 / 코틀린 상호 운용성을 제어할 때 도움이 되는 언어적 특징도 작성해보겠다. 12-1. 자바 코드를 코틀린에서 사용하기 코틀린은 JVM을 주 대상으로 설계됐기 때문에 상당히 쉽게 자바 코드를 코틀린에서 사용할 수 있다. 주로 발생하는 문제들은 자바에 없는..
-
11-3. 도메인 특화 언어 : 고차 함수와 DSLStudy(종료)/Kotlin 22.09.13 ~ 12.18 2022. 12. 2. 15:35
11장 11-1-1. 도메인 특화 언어 : 연산자 오버로딩(1~5) 11-1-2. 도메인 특화 언어 : 연산자 오버로딩(6~8) 11-2. 도메인 특화 언어 : 위임 프로퍼티 11-3. 도메인 특화 언어 : 고차 함수와 DSL 11-3. 도메인 특화 언어 : 고차 함수와 DSL 1) 중위 함수를 사용해 플루언트 DSL 만들기 중위 함수를 이용하는 플루언트(fluent) API를 만들어 보자. 컬렉션 데이터에 대한 질의에 사용할 수 잇는 SQL과 비슷한 문법을 사용하는 간단한 DSL을 정의할 예정이다 val nums = listOf(2, 8, 9, 5, 3, 5) val query = from(nums) where( it > 3 ) select { it * 2 } orderBy { it } println(..
-
11-2. 도메인 특화 언어 : 위임 프로퍼티Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 12. 1. 14:06
11장 11-1-1. 도메인 특화 언어 : 연산자 오버로딩(1~5) 11-1-2. 도메인 특화 언어 : 연산자 오버로딩(6~8) 11-2. 도메인 특화 언어 : 위임 프로퍼티 11-3. 도메인 특화 언어 : 고차 함수와 DSL 11-2. 도메인 특화 언어 : 위임 프로퍼티 위임 프로퍼티를 사용해 간단한 문법적인 장식 뒤에 프로퍼티 접근 로직을 구현할 수 있다. 예전에 lazy 위임을 통해 최초 접근 시 까지 프로퍼티 계산을 지연시키는 경우를 봤었다. val result by lazy{ 1 + 2 } 11-1에서 설명한 연산자와 마찬가지로 위임 프로퍼티 구현도 몇 가지 관습에 의해 이뤄지는데, 이 관습을 통해 프로퍼티를 읽고 쓰는 방법, 위임 객체 자체의 생성을 제어하는 방법을 알 수 있다. 1) 표준 위..
-
11-1-2. 도메인 특화 언어 : 연산자 오버로딩(5~8)Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 11. 25. 16:41
11장 11-1-1. 도메인 특화 언어 : 연산자 오버로딩(1~5) 11-1-2. 도메인 특화 언어 : 연산자 오버로딩(6~8) 11-2. 도메인 특화 언어 : 위임 프로퍼티 11-3. 도메인 특화 언어 : 고차 함수와 DSL 11-1-2. 도메인 특화 언어 : 연산자 오버로딩(6~8) 6) 호출과 인덱스로 원소 찾기 호출 관습(convention)을 사용해 값을 함수처럼 호출 식에서 사용할 수 있다. 사용 방법은 필요한 파라미터와 함께 invoke() 함수를 정의하면 된다. 함수 타입의 값은 자동으로 invoke()함수가 생기지만 원한다면 임의의 타입에 대해 invoke() 함수를 정의할 수 있다. operator fun Map .invoke(key: K) = get(key) fun main() { v..
-
11-1-1. 도메인 특화 언어 : 연산자 오버로딩(1~5)Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 11. 24. 22:45
11장 11-1-1. 도메인 특화 언어 : 연산자 오버로딩(1~5) 11-1-2. 도메인 특화 언어 : 연산자 오버로딩(6~8) 11-2. 도메인 특화 언어 : 위임 프로퍼티 11-3. 도메인 특화 언어 : 고차 함수와 DSL 11-1-1. 도메인 특화 언어 : 연산자 오버로딩(1~5) 연산자 오버로딩은 + - * / 등 코틀린 내장 연산자에 대해 새로운 의미를 부여할 수 있게 해주는 언어 기능이다. 당장 떠오르는건 같은 + 연산자를 사용하더라도, Number 타입의 경우 덧셈 연산을 하지만 문자 타입의 경우 문자를 합치는 연산을 한다. 이게 가능한 이유가 +가 오버로딩돼 있어 다양한 구현을 제공하기 때문이라고 한다. 이러한 기능들을 사용하기 위한 연산자 오버로딩에 대해 좀 더 자세히 알아보자. 1) 단..
-
10-2. 어노테이션과 리플렉션 : 리플렉션Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 11. 19. 21:26
10장 10-1. 어노테이션과 리플렉션 : 어노테이션 10-2. 어노테이션과 리플렉션 : 리플렉션 10-2. 리플렉션 리플렉션 API는 클래스, 함수, 프로퍼티의 런타임 표현에 접근할 수 있게 해주는 타입, 함수 프로퍼티들의 모음이다. 작성한 프로그램이 컴파일 시점에 알 수 없는 클래스를 다뤄야 하는데, 어떤 정해진 공통의 계약을 준수해야만 하는 경우 리플렉션이 유용하다. 예를들면 플러그인으로 클래스를 동적으로 적재하거나, 멤버들의 시그니처를 알 경우 적재한 클래스에 속한 멤버를 호출하는것이 가능하다. 1) 리플렉션과 API 개요 리플렉션 관련 클래스는 kotlin.reflect 패키지에 들어있다. 호출 가능 그룹 / 지정자 그룹으로 크게 두 가지 그룹으로 나눌수 있다. 호출 가능 그,룹은 프로퍼티와 함..
-
10-1. 어노테이션과 리플렉션 : 어노테이션Study(종료)/Kotlin 22.09.13 ~ 12.18 2022. 11. 17. 18:02
10장 10-1. 어노테이션과 리플렉션 : 어노테이션 10-2. 어노테이션과 리플렉션 : 리플렉션 내가 알고 있는 어노테이션은 자바에서 @를 통해서 작성하는것이고, @Override를 통해 사용했던 기억 정도밖에 없다. 이번 단원에서 좀 더 자세히 알아봐야겠다. 10-1. 어노테이션 책에서는 어노테이션은 커스텀 메타데이터를 정의하고 이 메타데이터를 소스코드상의 선언, 식, 전체 파일 등의 엮는 방법을 제공한다고 설명한다. 1) 어노테이션 클래스 정의하고 사용하기 어노테이션을 사용하는 가장 기본적인 방법은 선언 앞쪽 변경자 위치에 @이 붙은 어노테이션 이름을 적는 것 이다. import org.junit.Test class MyTestCase{ @Test fun testOnePlusOne(){ assert..