목록책 정리 (74)
초보개발자 긍.응.성
10장 애노테이션과 리플렉션 💡 다루는 내용 애노테이션 적용과 정의 리플렉션을 사용해 실행 시점에 객체 내부 관찰 코틀린 실전 프로젝트 예제 애노테이션(annotation) - 라이브러리가 요구하는 의미를 클래스에게 부여할 수 있다. 리플렉션(reflection) - 실행 시점에 컴파일러 내부 구조를 분석할 수 있다. 10.1 애노테이션 선언과 적용 10.1.1 애노테이션 적용 @Test fun testTrue() { Assert.assertTrue(true) } 코틀린도 자바와 같은 방법으로 애노테이션을 적용한다. data class Date(val millisSinceEpoch: Long) { private val interval = LocalDateTime.ofInstant(Instant.ofEpo..
9장 제네릭스 💡 다루는 내용 제네릭 함수와 클래스를 정의하는 방법 타입 소거와 실체화한 타입 파라미터 선언 지점과 사용 지점 변성 9.1 제네릭 타입 파라미터 9.1.1 제네릭 함수와 프로퍼티 val authors = listOf("Dmitry", "Svetlana") val readers: MutableList = mutableListOf() // val readers = mutableListOf() fun List.slice(indices: IntRange): List val List.penultimate: T get() = this[size - 2] println(listOf(1, 2, 3, 4).penultimate) 제네릭을 사용하면 타입 파라미터를 받는 타입을 정의할 수 있다. 안에 들어가는..
6장 코틀린 타입 시스템 💡 다루는 내용 널이 될 수 있는 타입과 널을 처리하는 구문의 문법 코틀린 원시 타입 소개와 자바 타입과 코틀린 원시 타입의 관계 코틀린 컬렉션 소개와 자바 컬렉션과 코틀린 컬렉션의 관계 6.1 널 가능성 널이 될 수 있는 타입 fun strLen(s: String) = s.length strLen(nullSt) // ERROR: Null can not be a value of a non-null type String fun strLenSafe(s: String?): Int = if (s != null) s.length() else 0 코틀린에서 타입을 그냥 명시하면 null이 될 수 없는 인자이다. 타입 이름 뒤에 물음표(?)를 붙여 널이 될 수 있는 타입을 명시한다. 널이 될..
5장 람다로 프로그래밍 💡 다루는 내용 람다 식과 멤버 참조 함수형 스타일로 컬렉션 다루기 시퀀스: 지연 컬렉션 연산 자바 함수형 인터페이스를 코틀린에서 사용 수신 객체 지정 람다 사용 5.1 람다 식과 멤버 참조 람다 소개: 코드 블록을 함수 인자로 넘기기 button.setOnClickListener { /* 클릭시 수행할 동작 */ } 람다 식의 문법 val sum = { x: Int, y: Int -> x + y } run { println(42) } 람다 식은 중괄호로 둘러싸여 있다. 식이기 때문에 변수에 저장할 수 있다. run 함수를 통해 인자로 받은 람다를 실행할 수 있다. 실행 시점에서 람다 호출에는 아무 부가 비용이 들지 않는다. data class Person(val name: Str..
4장 클래스, 객체, 인터페이스 💡 다루는 내용 클래스와 인터페이스 뻔하지 않은 생성자와 프로퍼티 데이터 클래스 클래스 위임 object 키워드 사용 4.1 클래스 계층 정의 코틀린 인터페이스 interface Clickable { fun click() // 일반 추상 메서드 fun showOff() = println("I'm clickable!") // 디폴트 메서드 } interface Focusable { fun setFocus(b: Boolean) = println("I ${if (b) "got" else "lost"} focus.") fun showOff() = println("I'm focusable!") } class Button: Clickable, Focusable { override f..
3장 함수 정의와 호출 💡 다루는 내용 컬렉션, 문자열, 정규식을 다루기 위한 함수 이름 붙인 인자, 디폴트 파라미터 값, 중위 호출 문법 사용 확장 함수와 확장 프로퍼티를 사용해 자바 라이브러리 적용 최상위 및 로컬 함수와 프로퍼티를 사용해 코드 구조화 3.1 코틀린에서 컬렉션 만들기 val set = hashSetOf(1, 7 ,53) println(set.javaClass) // class java.util.HashSet val list = arrayListOf(1, 7, 53) println(list.javaClass) // class java.util.ArrayList val map = hashMap(1 to "one", 7 to "seven", 53 to "fifty-three") printl..