본문 바로가기
728x90

코틀린7

코틀린에서 @RequiredArgsConstructor @RequiredArgsConstructor 애노테이션과 유사한 기능을 구현하기 위해 data class와 @JvmOverloads 애노테이션을 사용할 수 있습니다. data class는 Lombok의 @RequiredArgsConstructor와 유사한 불변성을 제공하며, @JvmOverloads는 자동으로 오버로딩된 생성자를 생성할 수 있도록 합니다.dependencies { implementation 'org.projectlombok:lombok:1.18.20' kapt 'org.projectlombok:lombok:1.18.20'}@NoArgsConstructordata class MyClass(val param1: String, val param2: Int) { @JvmOverl.. 2023. 6. 12.
Kotlin - 컬렉션 코틀린에서 배열은 없다. 컬렉션의 다양한 표현 방식 fun main() { val array = arrayOf(100, 200) array.plus(300) for (i in array.indices) { println("$i ${array[i]}") } for ((index, value) in array.withIndex()) { println("$index $value") } for (i in 0 until array.size) { println(array[i]) } for (element in array) { println(element) } } 컬렉션의 불변인지, 가변인지를 설정해야함. 가변 컬렉션: 컬렉션에 element 를 추가, 삭제할 수 있다. 불변 컬렉션: 컬렉션에 element 를 추가.. 2023. 5. 6.
코틀린 - Object 함수(Companion) Companion Object companion object 에 유틸성 함수들을 넣어도 되지만, 최상단 파일을 활용하는 것을 추천 드립니다! 자바에서 코틀린에 있는 static field 나 statice 함수를 사용하고 싶을 때는 @JvmStatic 어노테이션을 씁니다. Person.Companion.newBaby("ABC"); 로 접근 가능 Person.newBaby("ABC"); 로 접근 가능 반면 컴파니언 명이 있는 경우 class Person private constructor ( var name: String, var age: Int, ) { companion object Factory { private const val MIN_AGE = 1 @JvmStatic fun newBaby(name:.. 2023. 5. 1.
코틀린 - 접근 제어자 생성자 접근 제어자 생성자에 접근 지시어를 쓰려면 constructor 를 써야한다. java 에서 유틸성 코드를 만들때 abstract class + private constuctor 를 사용해서 인스턴스화를 막았음. public abstract class StringUtils { private StringUtils() {} public boolean isDirectoryPath(String path) { return path.endsWith("/"); } } 파일 최상단에 바로 함수를 만들면, static final 함수로 생성됩니다. fun isDirectoryPath(path: String): Boolean { return path.endsWith("/") } 프로퍼티 접근 제어자 두가지 방법 c.. 2023. 5. 1.
코틀린 - 클래스 생성자와 상속 다양한 생성자 선언 class Person constructor(name: String, age: Int) { var name: String = name var age: Int = age init { if (age = 20 } } 자바로 변환 시 함수 앞에 final 이 붙습니다. 모두 동일한 기능이고 표현 방식만 다릅니다. 객체의 속성이라면, custom getter를 쓴다. 그렇지 않다면 함수를 씁니다. custom getter, setter 선언 방법 var name: String = name get() = field.uppercase() set(value) { field = value.uppercase() } abstract class Animal( protected val species : St.. 2023. 5. 1.
Kotlin - 기본 문법2 Primitive Type 과 Reference Type 을 구분하지 않아도 된다. Null 이 들어갈 수 있는 변수는 타입 뒤에 ?를 붙여주어야 한다. - 아예 다른 타입으로 간주된다. 객체를 인스턴스화 할 때 new 를 붙이지 않아야 한다. 코틀린에서 null 을 다루는 방법 1. 코틀린에서 null 체크 2. Safe Call 과 Elvis 연산자 val str: String? = "ABC" (nullable 타입) str?.length // 가능!! => null 아니면 실행되고 null 이면 null 반환한다. str?.length ?: 0 null 이면 0 반환한다. 3. 널 아님 단언!! nullable 타입이지만, 아무리 생각해도 null 이 될 수 없는 경우 str!!.startsWith.. 2023. 4. 17.
Kotlin - 기본 문법1 1. 함수 선언 함수를 선언하려면 fun이라는 키워드를 이용 반환 타입을 선언할 수 있으며 생략하면 자동으로 Unit 타입이 적용 함수의 매개변수에는 var나 val 키워드를 사용할 수 없으며 val이 자동으로 적용 => 매개변숫값은 변경 불가능하다. 함수의 매개변수에는 기본값 선언 가능 fun main() { fun some(data1: Int, data2: Int = 10): Int { return data1 * data2 } } 매개변수명을 지정하여 호출하는 것을 명명된 매개변수라고 하며, 이렇게 하면 함수 선언문의 매개변수 순서에 맞춰호출하지 않아도 됩니다. some(date2 = 20, data1 = 10) 2. 컬렉션 타입 List, Set, Map List: 순서가 있는 데이터 집합으로 데이.. 2023. 3. 27.
728x90