일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 팩토리 메소드
- 디자인패턴 #
- Functional Programming
- 옵저버 패턴
- Singleton
- a
- designPattern
- builderPattern
- r
- ㅋㅁ
- 프로토타입 패턴
- 싱글톤
- 추상 팩토리
- Observer Pattern
- factory method
- El
- ㅓ
- 함수형프로그래밍
- Abstract Factory
- 추상팩토리패턴
- Kotlin
- PrototypePattern
- 디자인패턴
- 코틀린
- F
- Design Pattern
- 빌터패턴
- Today
- Total
목록Kotlin in Action (36)
오늘도 더 나은 코드를 작성하였습니까?
타입인자가 없을 표기하기 위해 을 사용한다. 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 인터페이스 인터페이스를 사용하는 모든 곳에서 와일드카드를 만들어야 된다. 코틀린도 사용 지점 변성을 지원 클래스 안에서 특정 타입 파라미터가 공변적 반공변적인지 알수 없어도 타..
반공변 클래스의 하위 타입 관계는 공변 클래스의 경우와 반대이다. Comparator 인터페이스 살펴보기. interface Comparator{ fun compare(e1: T, e2: T): Int } 이 인터페이스는 T타입의 값을 소비하기만 한다. 따라서 타입 파라미터 앞에 in을 붙혀야 한다. 물론 특정 타입에 Comparator을 구현하면, 그 타입의 하위 타입에 속하는 모든 값을 비교할 수 있다. fun main() { val anyComparator = Comparator { e1, e2 -> e1.hashCode() - e2.hashCode() } val strings = listOf("a", "b", "c") strings.sortedWith(anyComparator) // 문자열과 같은..
List 인터페이스를 살펴보자. public interface List : Collection { // Query Operations override val size: Int override fun isEmpty(): Boolean override fun contains(element: @UnsafeVariance E): Boolean override fun iterator(): Iterator // Bulk Operations override fun containsAll(elements: Collection): Boolean // Positional Access Operations /** * Returns the element at the specified index in the list. */ pub..