#10 Kotlin Koans Introduction/Object expressions 설명

1 소개



Kotlin 공식 레퍼런스의 Kotlin Koans/Object expressions의 해설 기사입니다.

Kotlin Koans를 통해 Kotlin을 배우는 사람들의 도움이 되길 바랍니다.

다만, 레퍼런스를 자력으로 읽는 힘을 기르고 싶은 분은,
곧이 기사를 보지 마십시오!

한 번 각자로 도전하고 나서, 눈에 띄게 된다고 생각합니다

2 객체 식(Object Expressions)



오브젝트 표현식은 익명 클래스의 오브젝트를 생성하기 위한 object 표현입니다.

(※무명 클래스란, 특정의 클래스를 계승한 클래스이며, 한편 클래스명이 없고 선언과 이용을 동시에 실시하는 클래스입니다.)

구체적인 예를 살펴 보겠습니다.
window.addMouseListener(object : MouseAdapter() {
    override fun mouseClicked(e: MouseEvent) { /*...*/ }

    override fun mouseEntered(e: MouseEvent) { /*...*/ }
})

위의 예에서는 MousuAdapter 클래스를 상속하는 객체를 생성합니다.

생성된 객체는 MouseAdapter 클래스의 mouseClicked() 및 mouseEntered() 함수를 재정의합니다.

3 Introduction/Object expressions 해설



Kotlin Koans Introduction/Object expressions의 해설입니다.
수시로 본 사이트의 내용을 인용하겠습니다.

오른쪽의 본문을 보자.

Read about object expressions that play the same role in Kotlin as anonymous classes in Java.

Add an object expression that provides a comparator to sort a list in a descending order using java.util.Collections class. In Kotlin you use Kotlin library extensions instead of java.util.Collections, but this example is still a good demonstration of mixing and Java code.

왼쪽의 Kotlin 코드 (Java 라이브러리를 가져옵니다.)를 살펴 보겠습니다.
import java.util.*

fun getList(): List<Int> {
    val arrayList = arrayListOf(1, 5, 2)
    Collections.sort(arrayList, object {})
    return arrayList
}

Collections 클래스의 sort 함수는 첫 번째 인수로 List를 전달합니다. List의 순서를 제 2 인수로 건네주는 Comparator 객체가 compare() 함수를 호출하는 것으로 결정합니다.

Comparator 객체는, compare()関数 (을)를 호출해 제 1 인수, 제 2 인수 각각에 요소를 건네주어 크기를 비교합니다.

기본적으로 第1引数-第2引数
  • 양수일 때: 1을 돌려준다
  • 0일 때: 0을 반환한다
  • 부의 경우: -1 을 돌려준다

  • 라고 하도록 설계되어 있어, 3종의 값-1/0/1에 응해 제1 인수와 제2 인수의 대소를 판단하고 있습니다.

    List 모든 요소에 대해 이 비교를 수행합니다.

    (이 경우 첫 번째 인수로 1를, 두 번째 인수로 5를 전달하고 -1를 반환하고 첫 번째 인수로 5를 두 번째 인수로 '2' 전달 1이 반환됩니다.)

    이렇게하면 List의 모든 요소의 크고 작은 관계를 결정하고 큰 순서로 요소를 정렬합니다.

    단, 이번에는 내림차순으로 정렬하고 싶으므로 기본적으로 설정되어 있습니다.
    第1引数-第2引数 의 값에 따라 반환값을 확정시키는 곳을 第2引数-第1引数 의 값에 응하도록 하면 됩니다.

    그러므로
     Collections.sort(arrayList, object : Comparator<Int>{
            override fun compare(x:Int,y:Int) = y - x
        })
    

    와 같이 구현하게 됩니다.

    (제1 인수와 제2 인수의 x와 y는 임의의 변수명으로 OK입니다.)

    Collections 클래스 정보
    Comparator 클래스 정보

    4 마지막으로



    다음은 Kotlin Koans Introducion/SAM conversions의 해설을 하겠습니다

    좋은 웹페이지 즐겨찾기