코틀린 5

[Kotlin] 코틀린 MapStruct 적용 및 사용하기 (feat.gradle)

서버 작업을 하면 빈번하게 필요한 Model과 DTO 변환을 필드 선언만 해놓으면 자동으로 변환해주는 MapStruct를 Java 작업할때 많이 사용하는데요. Kotlin에서도 적용해보았습니다. Kotlin MapStruct 적용 build.gradle.kts 파일에 추가해줍니다. // build.gradle.kts plugins { kotlin("kapt") version "1.7.10" } subprojects { apply(plugin = "kotlin-kapt") dependencies { implementation("org.mapstruct:mapstruct:1.5.2.Final") kapt("org.mapstruct:mapstruct-processor:1.5.2.Final") kaptTest(..

backend/Kotlin 2022.09.02

[Kotlin] 코틀린 값 비교 - Equality Checks

Kotlin에서 == 연산자는 값이 같은지 비교하고, === 연산자는 참조값이 같은지 비교하는데 사용합니다. a == b 처럼 쓰면 아래처럼 컴파일 됩니다. if (a == null) b == null else a.equals(b) 아래 초 간단 예제를 봅니다. set, list 모두 동일한 결과이고 == 는 순서에 상관없이 set에 값이 같으면 true, === 는 객체 자체가 같은지 비교하니까 false로 나옵니다. list는 == 은 값의 순서가 같아야지 true, === 는 다른 객체니까 false로 나옵니다. fun main() { val book1 = setOf("book1","book2") val book2 = setOf("book1","book2") println(book1 == book2..

[Kotlin] 가변 컬렉션과 읽기 전용 컬렉션 구분하기

이펙티브 코틀린 책을 읽고 간단히 정리해본 것입니다. 아이템1. 가변성을 제한하라. - 가변 컬렉션과 읽기 전용 컬렉션 구분하기 중에서 읽기 전용 컬렉션 Iterable, Collection, Set, List 인터페이스 읽고 쓸수 있는 컬렉션 MutableIterable, MutableCollection, MutableSet, MutableList 인터페이스 - 읽기전용 인터페이스를 상속 받아, 변경을 위한 메서드만 추가. Iterable 과 MutableIterable 인터페이스 package kotlin.collections import kotlin.internal.PlatformDependent /** * Classes that inherit from this interface can be rep..

backend/Kotlin 2022.08.02

[Kotlin] 읽기 전용 프로퍼티 - val property

다음 내용은 이펙티브 코틀린 책을 읽고 간단히 정리해본 것입니다. 아이템1. 가변성을 제한하라. - 읽기 전용 프로퍼티(val) 중에서 읽기 전용 프로퍼티인 val에 대해 정리해보자. val a = 10 //a = 20 // 재할당 불가. val list = mutableListOf(1, 2, 3) // 읽기 전용 프로퍼티(val)로 선언되었어도 mutable 객체를 담고 있다면 내부적으로 변환 가능 list.add(4) print(list) //list = mutableListOf(5) //val 로 선언되었다면 재할당이 불가능 '프로퍼티를 읽을 수만 있다는 속성(읽기 전용)'과 '값이 변할 수 없는 것(가변성)'을 구분해서 생각해야한다. var 프로퍼티를 사용하는 val 프로퍼티는 var 프로퍼티가 ..

backend/Kotlin 2022.07.30

[IntelliJ] 사용하지 않는 import문 자동으로 삭제되도록 설정

사용하던 코드를 삭제한 경우 아래처럼 import문이 그대로 남아있는 경우가 있습니다. IntelliJ > Code > Optimize Imports 인 단축키 control + option + O(mac 키보드 기준)를 사용할 수도 있지만.. 자동으로 설정하기 위해 Preferences > Editor > General > Auto Import > Optimize Imports on the fly을 클릭해주면 됩니다. (단, 언어를 여러개 사용중이시라면 언어별 Editor별로 Optimize Imports on the fly에 체크!를 해야합니다.) Java Editor 를 사용중이시라면 Java 영역의 Optimize Imports on the fly에 체크! Kotlin Editor를 사용중이시라면..