Kotlin
자바는 클래스 파일을 JVM이 실행하며, 코틀린도 가상 머신인 JVM 에서 실행할 수 있다.
또한 클래스명과 파일명을 다르게 설정해도 되는 특징을 가진다.
val 변수명 : 타입 = 값
val data1: Array<Int> = Array(3,{0})
코틀린은 null 과 not null 을 명확하게 구분해서 선언해야 한다.
var data2: Int?=10
과 같이, 타입 뒤에 물음표를 추가하여 Null 허용으로 선언할 수 있다.
코틀린에서는 생성자를 주 생성자, 보조 생성자로 구분한다.
class 클래스이름 constructor(){} //주 생성자 선언
함수는 매개변수를 선언할 때 var 나 val 키워드를 추가할 수 없다.
주 생성자에서만 유일하게 var , val 키워드로 매개변수를 선언하여 클래스의 멤버 변수로 만들 수 있다.
class 클래스이름 {
constructor()~~
}
코틀린에서 오브젝트 클래스는 익명 클래스 를 만들 목적으로 사용한다.
선언과 동시에 객체를 생성하며, object 뒤에 콜론을 입력하고 그 뒤에 클래스의 상위 또는 인터페이스를 입력해야한다.
object: A {} // 클래스를 A 타입으로 선언한 것
자바의 static 메서드와 비슷하다.
클래스 이름으로 멤버에 접근할 수 있게 하려면 companion 이라는 키워드로 선언해야한다.
함수 안에서 잠깐 기다렸다가 나중에 이어지는 코루틴 함수를 호출하면, 바깥 함수에도 suspend를 붙인다.
runBlocking {}은 코루틴 밖(테스트, main 등)에서 suspend 함수를 실행하기 위한 진입점이다.
JUnit 테스트 시작
→ runBlocking으로 코루틴 실행
→ get 함수 호출
→ 콜백 응답이 올 때까지 테스트 대기
→ 성공하면 assert 검증
→ 테스트 종료
runBlocking {} 안은 람다 블록이다.
return@runBlocking의 @runBlocking은 어노테이션이 아니라 라벨이고, “이 블록까지만 반환한다”는 뜻이다.
val result = runBlocking {
if (isValid) {
return@runBlocking "성공"
}
"실패"
}
return@runBlocking "성공"
은:
테스트 함수 전체를 끝내는 게 아니라
runBlocking 블록의 결과를 "성공"으로 정한다.
따라서 result에 "성공"이 들어가게 된다.
여러 작업이 끝날 때까지 한 스레드가 기다려야 할 때 사용한다.
new CountDownLatch(3)
3으로 설정countDown() 호출await() 호출0이 되면 await() 중인 스레드가 다시 실행됨앞으로 업무에서 Kotlin 코드를 접하게 될 것 같다. 그동안은 자바로만 개발을 진행해서 코틀린에 대해서는 정말 기초적인 문법도 모르는 상황이었기 때문에 기본적인 지식이 필요했다.
1. 모르는 건 혼자 찾아보지 말고 바로 물어보자..
2. 무조건 꼼꼼하게 확인! (코드작성이던 문서확인이던 모두..)
그리고 인턴이랑 취준 병행하는게 생각보다 쉽지 않을 것 같다..
이번주는 연휴도 있는 만큼, 다시 개인 공부를 열심히 해야할 것 같다.