일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- bean
- QueryDSL
- entity graph
- Kotlin
- mirror maker2
- producer
- centos7
- Entity
- K8s
- spring kafka
- CodePipeline
- Spring JPA
- kafka
- spring
- Spring Data JPA
- Kubernetes
- PAGING
- JPA
- transactionaleventlistener
- API
- AWS
- consumer
- cd
- git
- CI
- topic생성
- Streams
- offsetdatetime
- ECS
- mysql
- Today
- Total
목록Kotlin (13)
Yebali

코틀린에서는 null을 허용하는 nullable 변수가 별도로 존재한다. 이런 변수들을 일일이 if로 체크해서 로직을 하는 것은 아름답지 못할 수 있다. 다른 방법으로 null을 처리하는 방법을 알아보자. Nullable 변수 처리 null을 처리하는 방법은 아래와 같이 몇가지가 있다 ?. (null safe operator) ?: (elvis operator) !!. (non-null assertion operator) ?. (null safe operater) 참조 연산자를 실행하기 전, 객체의 null 여부를 확인부터 하고 null이라면 뒤따라 오는 연산을 실행하지 않는 연산자 fun main() { var a: String? = null println(a?.toUpperCase()) // 'nul..

제너릭이란? 클래스나 함수에서 사용하는 자료형을 외부에서 지정할 수 있는 기능. 흔히 말하는 템플릿과 같은 기능. 일반적으로는 타입 파라미터의 이름은 Type의 T를 사용하는 것이 관례이다. open class A { open fun shout() { println("A가 소리칩니다.") } } class B : A() { override fun shout() { println("B가 소리칩니다.") } } class C : A() { override fun shout() { println("C가 소리칩니다.") } } // 제너릭 클래스 class UsingGeneric (var t:T) { fun doShouting() { t.shout() } } // 제너릭 함수 fun doShouting(t: T..

Static 이란? Java에서 Static 키워드를 사용한다는 것은 메모리에 한번 할당되어 프로그램이 종료될 때 해제되는 것을 의미합니다. Static 변수와 Static 메서드는 Static 메모리 영역에 존재하므로 객체가 생성되기 이전에 이미 할당이 되어 있습니다. 그렇기 때문에 객체의 생성 없이 바로 사용할 수 있습니다. Kotlin에서는 static 키워드 대신 object와 companion object 키워드를 사용합니다. Object Object는 최초 사용시 자동으로 생성되고, 생성자도 필요하지 않다. object Counter { var count = 0 fun countUp() { count++ } fun clear() { count = 0 } } fun main() { println..

스코프 함수 스코프 함수는 함수형 언어의 특징을 좀 더 쉽게 사용하기 위해 기본으로 제공하는 함수들이다. 인스턴스들을 스코프함수와 함께 사용하면 좀 더 깔끔하고 명확한 코딩이 가능하다. 대표적인 스코프 함수로는 apply, with, let, also, run이 있다. apply apply의 구현은 아래와 같다. inline fun T.apply(block: T.() -> Unit): T { block() return this } 수신된 객체를 그대로 반환하며 람다함수 내부에서 자기 자신을 this로 처리한다. 람다함수 내부에서 객체의 함수를 사용하지 않고 자기 자신을 다시 반환하려는 경우 apply를 사용한다. 대표적인 예로 객체 초기화에 많이 사용된다. data class Person (var nam..

고차 함수 함수를 마치 클래스에서 만들어 낸 '인스턴스'처럼 취급하는 방법이다. 함수를 파라미터로 전달할 수 있도 물론 반환 값도 받을 수 있다. fun a (str:String) { println("$str 함수 a") } // 'Unit'의 의미는 반환하는 값이 없다는 의미 fun b (function: (String) -> Unit) { function("b가 호출한") //"b가 호출한"의 값이 함수 a에 전달되는 꼴 } fun main() { b(::a) } 함수를 파라미터로 전달할 때에는 ':: + 함수명'의 형태로 전달한다. b함수에 파라미터로 전달된 '::a'는 함수 a가 파라미터로 전달되었다는 의미이다. 람다 함수 위 고차 함수의 예제에서 파라미터로 전달할 함수에 이름까지 붙여주는 정성이..

추상화와 인터페이스를 알기 전 알고 가야 할 개념이 함수의 오버라이딩이다. 함수 오버라이딩 오버라이딩이란 클래스를 상속받아서 구현할 때, 슈퍼 클래스에 구현되어있는 메서드를 서브 클래스가 재정의하여 구현하는 기능이다. 클래스를 상속할 때와 비슷하게 매서드에 'open'키워드를 붙여야 한다. 오버라이딩하는 매서드에는 'override'키워드를 붙여 재 구현하면 된다. open class Animal() { open fun eat() { println("eat food") } } class Tiger : Animal() { override fun eat() { println("eat meat") } } fun main() { var t = Tiger() t.eat() // "eat meat"이 출력된다 } ..