일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- ㅋㅁ
- Singleton
- designPattern
- 옵저버 패턴
- factory method
- Observer Pattern
- 빌터패턴
- 프로토타입 패턴
- F
- Kotlin
- El
- 디자인패턴
- 함수형프로그래밍
- Functional Programming
- 추상 팩토리
- r
- PrototypePattern
- ㅓ
- Abstract Factory
- builderPattern
- Design Pattern
- 싱글톤
- 디자인패턴 #
- 코틀린
- 팩토리 메소드
- 추상팩토리패턴
- a
- Today
- Total
목록Kotlin in Action/코틀린 답게 사용하기 (21)
오늘도 더 나은 코드를 작성하였습니까?
애노테이션 선언 제이키드 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..
타입인자가 없을 표기하기 위해 을 사용한다. MutableList 는 Mutable와 같지 않다. Mutable - 모든 타입의 원소를 담을 수 있는 리스트. MutableList - 타입에 대한 정보가 정해지지 않은 리스트. 단, 타입이 정해지지 않았을 뿐이지 모든 타입을 담을수 있는것이 아니고 원소의 타입은 어찌 되었든 Any?(최상위)의 하위 타입이린간 분명하다. fun main() { val list: MutableList = mutableListOf('a', 1, "qwe") val chars = mutableListOf('a', 'b', 'c') val unknownElements: MutableList = if(Random.nextBoolean()) list else chars //unkno..
클래스를 선언하면서 변성을 지정하면 그 클래스를 사용하는 모든 곳에서 변성 지정자( in / out )가 영향을 주기 때문에 편리하다. 이런 방식을 선언 지점 변성이라 한다. 자바에서는 타입 파라미터가 있는 타입을 사용할 때마다 해당 타입 파라미터를 하위 타입이나 상위 타입 중 어떤 타입으로 대치할 수 있는지 명시해야 된다. 이런 방식을 사용 지점 변성이라 한다. 코틀린의 선언 지점 변성은 단 한번만 표시 하기 때문에 클래스를 사용하는 곳에서 변성에 대한 신경을 쓰지않아도 되기 때문에 코드가 간결하고 깔끔하다. 자바의 Stream 인터페이스 인터페이스를 사용하는 모든 곳에서 와일드카드를 만들어야 된다. 코틀린도 사용 지점 변성을 지원 클래스 안에서 특정 타입 파라미터가 공변적 반공변적인지 알수 없어도 타..