본문 바로가기

kotlin24

[Spring Boot With Kotlin] 오류 별 해결 방안 정리 오류1 상황 Entity를 작성 후 정상적으로 동작하는지 확인하기 위해 Test 코드를 작성하였는데 실행 시 해당 에러가 발생하였음. 오류 문구 Execution failed for task ':test'. There were failing tests. See the report at: file:///{프로젝트 경로}/index.html 해결 방안 1. "File > Settigns > Build, Execution, Deployment > Build Tools > Gradle" 메뉴로 이동한 뒤, "Run tests: using" 옵션을 "IntelliJ IDEA"로 선택 후 적용 2022. 7. 24.
[Spring Boot With Kotlin] Web Server Tutorial (Feat. Intellij) 가장 먼저 jetbrains에서 Intellij IDEA를 설치합니다. 다운로드 IntelliJ IDEA: 우수성과 인체 공학이 담긴 JetBrains Java IDE www.jetbrains.com 상용 버전의 경우 Spring을 바로 설정할 수 있지만 커뮤니티 버전의 경우 https://start.spring.io/ 사이트에 접속하여 Spring 프로젝트를 생성해야만 합니다. 저는 Spring Boot와 Kotlin을 이용하여 웹을 개발할 예정이기 때문에 아래와 같이 설정한 뒤, GENERATE를 이용하여 압축 파일로 저장하였습니다. Project : Gradle Project Language : Kotlin Spring Boot : 2.7.2 Java : 17 Dependencies : Spring.. 2022. 7. 23.
[Kotlin] ROOM Database 사용 방법 Environment Setting plugins{ ... } apply plugin: 'kotlin-kapt' dependencies { def room_version = "2.2.5" ... // room implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" // For Kotlin use kapt instead of annotationProcessor // optional - Kotlin Extensions and Coroutines support for Room implementation "androidx.room:room-ktx:$room_version" //.. 2022. 1. 10.
[Kotlin] lazy lazy가 적용된 변수가 실제 사용되는 시점에 초기화를 진행함에 따라 코드의 실행시간을 최적화할 수 있음. 예제 fun main(){ val number: Int by lazy{ println("초기화를 합니다.") 7 } println("코드를 시작합니다.") println(number) println(number) } 예제 결과 2022. 1. 6.
[Kotlin] Data Class 데이터를 다루는데 최적화된 클래스로 equals(), hashcode(), toString(), copy(), componentX() 함수가 자동으로 생성됨. 예제 fun main(){ val a = General("보잉",212) println(a == General("보잉", 212)) println(a.hashCode()) println(a) val b = Data("루다", 306) println(b == Data("루다", 306)) println(b.hashCode()) println(b) } class General(val name: String, val id: Int) data class Data(val name:String, val id: Int) 예제 결과 2022. 1. 6.
[Kotlin] 오브젝트 Object Object로 선언된 객체는 최조 생성 시 자동으로 생성되며, 이후에는 코드 전체에서 공용으로 사용될 수 있음. Companion Object Class 내에 오브젝트가 존재할 경우, 인스턴스끼리 해당 오브젝트를 서로 공유함. 예제 fun main() { println(Counter.count) Counter.countUp() Counter.countUp() println(Counter.count) Counter.clear() println(Counter.count) } object Counter{ var count = 0 fun countUp(){ count++ } fun clear(){ count = 0 } } 예제 결과 Listener 이벤트를 수신해서 출력하는 클래스(EventPrin.. 2022. 1. 6.
[Kotlin] 스코프 함수 스코프 함수 스코프 함수의 경우 별도의 Scope에서 인스턴스의 변수와 함수를 조작할 수 있음. (apply, run, with, also, let) let, also의 경우 Scope 외부에서 동일한 이름의 변수나 함수가 존재할 때를 대비해 it과 같이 사용하기 위해 존재함. 예제 fun main(){ var a = Book("책1",10000).apply{ name = "[초특가]"+name discount() } a.pay() } class Book(var name:String, var price:Int){ fun pay(){ println("${name}의 가격은 ${price}원입니다.") } fun discount(){ price -= 2000 } } 결과 2022. 1. 5.
[Kotlin] 고차함수 고차함수 다른 함수를 인자로 받거나 함수 실행의 결과를 함수로 반환하는 함수 예제 fun main(){ b(::a) // 일반 함수를 고차 함수로 변환하는 연산자 -> ::일반 함수명 val c: (String)->Unit = { str -> println("$str 람다함수") } b(c) } fun a(str:String){ println("$str a함수") } fun b(function: (String)->Unit){ //Unit is Not return function("b가 호출한") } 결과 2022. 1. 5.
[Kotlin] 추상화 (abstract, interface) abstract 기존 추상화 개념과 같음. 예제1 fun main(){ var a = real_Man() a.run() a.sniff() } abstract class Man { abstract fun run() fun sniff(){ println("냄새를 맡는 중") } } class real_Man: Man(){ override fun run(){ println("달리는 중") } } 예제1 결과 interface abstract, open 등과 같은 키워드를 사용하지 않더라도 추론을 통해 자동 적용되며, 한 번에 여러 인터페이스를 상속 시킬 수 있음. 예제2 fun main(){ var a = Man() a.run() a.eat() } interface Runner { fun run() // eq.. 2022. 1. 5.