안드로이드

[코틀린] 코틀린 기초

이손안나 2022. 9. 24. 23:19

함수와 변수

  • 코틀린은 대부분 식으로 구성된다.
fun hello() = println("hello")

// val은 재할당이 불가능, var는 재할당 가능
val apple: String = "apple"

var banana: String = "banana"

커스텀 접근자


// 커스텀 접근자
class Person(val firstName: String, val familyName: String) {
  var age: Int? = null
    set(value) {
      if (value != null && value <= 0) {
        throw IllegalArgumentException("Invalid age: $value")
      }
      field = value
    }
}

enum & when

// enum & when
enum class Color {
    RED,
    ORANGE,
    YELLOW
    ;
}

// java 스위치랑 비슷
fun getStringColor(color: Color) =
        when (color) {
            Color.RED -> "RED" 
            Color.ORANGE -> "ORANGE" 
            Color.YELLOW -> "YELLOW" 
        }

fun getStringColor2(color: Color) =
        when (color) {
            Color.RED, Color.ORANGE, Color.YELLOW -> "COLOR"
        }

fun getStringColor3(color1: Color, color2: Color) = 
        when {
            (color1 == Color.RED || color2 == Color.ORANGE) -> "RED ORANGE"
            else -> throw RuntimeException()
        }

객체

  • 코틀린에서 객체 선언은 클래스와 상수를 합한 것이다.
  • 객체 선언을 통해 싱글턴, 즉 인스턴스가 단 하나만 존재하는 클래스를 만들 수 있다.
  • 컴파일러는 여러 스레드에서 싱글턴에 접근하더라도 오직 한 인스턴스만 공유되고 초기화 코드도 단 한 번만 실행 보장한다.
// 싱글턴을 선언할 때에는 class 대신 object 사용

object Application {
  val name = "My Application"
  
  override fun toString() = name
  
  fun exit() { }
}