#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引数
값
오브젝트 표현식은 익명 클래스의 오브젝트를 생성하기 위한
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引数
값
import java.util.*
fun getList(): List<Int> {
val arrayList = arrayListOf(1, 5, 2)
Collections.sort(arrayList, object {})
return arrayList
}
라고 하도록 설계되어 있어, 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의 해설을 하겠습니다
Reference
이 문제에 관하여(#10 Kotlin Koans Introduction/Object expressions 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/G-o/items/06e52c81c326b9ecb34c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(#10 Kotlin Koans Introduction/Object expressions 설명), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/G-o/items/06e52c81c326b9ecb34c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)