| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- wrapper class
- generic type
- assertJ
- optimistic lock
- Java
- cross-cutting concerns
- CORS
- hoisting
- IllegalStateException
- COPYOFRANGE
- ExceptionResolver
- 역정규화
- 단어변환
- CQS
- 벌크연산
- Generic method
- type eraser
- SPOF
- tracking-modes
- Transaction
- HandlerMethod
- NestJS 요청흐름
- 프로그래머스
- API
- pessimistic lock
- RequestMappingHandlerMapping
- demand paging
- #@Transacional
- propagation
- TDZ
- Today
- Total
목록Language/kotlin (17)
jingyulog
확장함수 기존 자바 코드위에 자연스럽게 코틀린 코드를 추가한다는 개념에서 출발 자바로 만들어진 라이브러리를 유지보수 및 확장할 때, 코틀린 코드를 덧붙인다. 따라서 어떤 클래스안에 있는 메서드처럼 호출할 수 있지만, 함수는 밖에 만들 수 있게 한다. 확장함수는 클래스에 있는 private 또는 protected 멤버를 가지고 올 수 없다. 멤버함수와 확장함수의 시그니처가 같으면, 멤버함수가 우선적으로 호출된다. 즉, 확장함수를 만들었지만, 다른 기능을 하는 똑같은 시그니처의 멤버함수가 생기면 오류가 발생할 수 있다. fun String.lastChar(): Char { return this[this.length - 1] } fun: 이건 함수라는 의미 String. : String 클래스를 확장한다는 의..
배열 array.indices는 0부터 마지막 index까지의 range이다. withIndex()를 사용하면, 인덱스와 값을 한번에 가져올 수 있다. array.plus()를 이용하면, 값을 쉽게 넣을 수도 있다. val arr = arrayOf(100, 200) arr.plus(300) // 배열에 새로운 element 추가 // 방법 1 for (i in arr.indices) { println("$i ${arr[i]}") } // 방법 2 for ((idx, value) in arr.withIndex()) { println("$idx $value") } Collection - List, Set, Map 컬렉션을 만들어줄 때, 불변인지 혹은 가변인지를 설정해야 한다. 가변(Mutable) 컬렉션: ..
Enum 열거형. 클래스 내에 상태를 구분하기 위한 객체들을 이름을 붙여 여러개 생성하고 그 중 하나의 상태를 선택해 나타내는 방식이다. 특징 enum class 안에는 상수를 나타내는 대문자로 나타낸다. enum 객체들은 고유한 속성을 가질 수 있다. 일반 클래스처럼 함수 선언도 가능하다. enum class Color (val red: Int, val green: Int, val blue: Int) { RED(255, 0, 0), GREEN(0, 255, 0), BLUE(0, 0, 255);
Data Class DTO 클래스 데이터(필드) 생성자와 getter equals, hashCode toString data 키워드를 붙여주면 아래 메서드 해결 equals, hashCode toString 여기에 named argument 까지 활용하면 builder pattern을 쓰는 것 같은 효과도 있다. 자바에서도 JDK16부터 record class를 도입하긴 했다. data class Person( private val name: String, private val age: Int ) Enum Class 특징 추가적인 클래스를 상속받을 수 없다. 인터페이스는 구현할 수 있으며, 각 코드가 싱글톤이다. enum class Country( val code: String ) { KOREA("KR"..
중첩 클래스의 종류 내부 클래스 외부 클래스를 참조하고 있다. 내부 클래스는 숨겨진 외부 클래스 정보를 가지고있어서 참조를 해지하지 못하는 경우가 발생할 수 있다. 따라서 메모리 누수가 생길 수 있고, 이를 debugging 하기 어렵다. 내부 클래스의 직렬화 형태가 명확하게 정의되지 않아 직렬화에 있어 제한이 있다. public class JavaHouse { private String address; private LivingRoom livingRoom; public JavaHouse(String address) { this.address = address; this.livingRoom = new LivingRoom(10); } public LivingRoom getLivingRoom() { retu..
static 함수와 변수 static: 클래스가 인스턴화 될 때, 새로운 값이 복제되는게 아니라 정적으로 인스턴스끼리의 값을 공유 companion object: 클래스와 동행하는 유일한 오브젝트 class Person private constructor( private val name: String, private val age: Int ){ companion object{ private val MIN_AGE = 1; // 런타임 시에 변수 할당 private const val MIN_AGE = 1; // 컴파일 시에 변수 할당 fun newBaby(name: String): Person { return Person(name, MIN_AGE) } } } 런타임 시에 변수가 할당됨 컴파일 시에 변수가 할..