일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 디자인패턴
- 프로토타입 패턴
- Functional Programming
- designPattern
- F
- 추상 팩토리
- 추상팩토리패턴
- 코틀린
- 싱글톤
- Abstract Factory
- ㅋㅁ
- 빌터패턴
- a
- 옵저버 패턴
- Observer Pattern
- 함수형프로그래밍
- Kotlin
- ㅓ
- PrototypePattern
- builderPattern
- 디자인패턴 #
- Singleton
- Design Pattern
- factory method
- 팩토리 메소드
- El
- r
- Today
- Total
목록Kotlin in Action (36)
오늘도 더 나은 코드를 작성하였습니까?
1. 코틀린 객체 생성 및 초기화의 기본 kotlin class의 생성자를 통해 객체를 생성할때, 자세히 살펴보자. class Person(val name: String, gender: String = "male") { val gender: String init { this.gender = if (gender in arrayOf("male", "female")) gender else throw IllegalArgumentException() } var age = 0 constructor(name: String, age: Int) : this(name) { this.age = age } } 1. primary constructor 클래스 이름뒤 ( ... ) 주생성자의 parmeter에 val( 기본 ge..
apply, with, let, also, run 함수는 작동 방식 및 결과가 유사하여 헷갈리기 때문에 공통점과 차이점을 구별하여 적재적소에 사용하는 방법을 알아보자 위 5개의 함수는 공통적으로 수신객체 및 그 객체에 적용되는 람다 함수를 가진다. - 수신객체 - 수신객체 지정람다 with @kotlin.internal.InlineOnly public inline fun with(receiver: T, block: T.() -> R): R { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) } return receiver.block() } receiver(수신객체), block(수신객체 지정람다) T.( )의 값을 반환 즉, 수신객체를 가지고 함..
애노테이션 선언 제이키드 Json 직렬화 라이브러리 (코틀린 액션 제공 소스코드) @JsonExclude 는 아무 파라미터도 없는 가장 단순한 애노테이션이다. annotation class JsonExclude annnotation 키워드만 제외하면 일반 클래스와 선언이 비슷하다. 애노테이션 클래스는 선언이나 식과 관련하여 메타데이터를의 구조를 정의 하기 때문에 내부에 아무코드도 없을때가 있다. 파라미터를 애노테이션이 가지려면, annotationn class JsonName(val name: String) annotationn class JsonName(val name: String) 일반 클래스 구문과 동일하게 작성하되 모든 파라미터에 val로 선언을 해야된다. public @interface Jso..
지금까지는 클래스와 함수를 사용하는 여러 코틀린의 특성을 보았다. 이들 모두는 정확한 이름을 알고 있어야 호출/사용 할 수 있었다. 애노테이션과 리플렉션을 사용한다면, 이런 제약을 벗어나 임의의 클래스를 다룰수있다 애노테이션을 이용하면 라이브러리가 요구하는 의미를 클래스에 부여할 수 있다. 리플랙션을 사용하면 실행 시점에 컴파일러 내부구조를 분석할수있다. 애노테이션은 적용하기는 쉽다, 하지만 만들기는 어렵다. 특히 애노테이션을 처리하는 코드는 더 어렵다. 애노테이션 선언과 적용 메타데이터를 선언에 추가하면 애노테이션을 처리하는 도구가컴파일 시점이나 실행 시점에 적절한 처리를 해준다. @+name 형태 예) Junit class MyTest{ @Test fun testTrue() { Assert.asser..