일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 알림
- AppBarLayout
- BOJ
- Algorithm
- LiveData
- room
- 백준
- hilt
- CollapsingToolbarLayout
- 코틀린
- Android
- Coroutine
- CustomView
- sqlite
- Navigation
- recyclerview
- onLayout
- ViewModel
- CoordinatorLayout
- 안드로이드
- activity
- DataBinding
- onMeasure
- notification
- Behavior
- HTTP
- 알고리즘
- View
- lifecycle
- kotlin
- Today
- Total
목록제네릭 (2)
개발일지
가변성 가변성이란 매개변수가 클래스에 영향을 주는 것을 말한다. 예를 들어 Int클래스는 Number클래스를 상속받았고, Number클래스 변수에 Int의 인스턴스를 대입할 수 있다. 이때 Int는 Number의 하위 형식이 된다. 가변성의 3가지 유형 용어 의미 공변성(Covariance) A가 B의 하위 형식이면 C는 C의 하위 형식이다. 생산자 입장의 out 성질 반공변성(Contravariance) A가 B의 하위 형식이면 C는 C의 하위 형식이다. 소비자 입장의 in성질 무변성 C와 C는 아무 관계가 없다. 생산자 + 소비자 무변성 기본 값이다. Any -> Number -> Int의 관계가 있지만 무변성이 적용되면 아무 관계가 없기 때문에 Type mismatce가 발생한다. class Box..
제네릭 개념 제네릭은 인스턴스를 생성할 때 자료형을 결정한다. 컴파일 시간에 자료형을 검사하여 코드의 안정성을 높인다. 제네릭의 본질은 런타임에 ClassCastException을 막아주어 안정성을 높이는데 있다. 제네릭 사용법 자료형을 결정할 수 없는 경우를 조심해야한다. 엥글 브래킷() 사이에 형식 매개변수를 넣어 선언한다. 코드 // 제네릭 클래스 class Box(vararg val elements: T) { fun printElements() { for(i in elements) { print("$i ") } println() } } // 제네릭 함수 fun printGeneric(element: T) { println(element) } fun main() { // 자료형을 유추할 수 있으면 ..