본문 바로가기

Java & Kotlin/Kotlin19

[Kotlin] 여러가지 기능 여러가지 기능 Type Alias Kotlin typealias FruitFilter = (Fruit) -> Boolean fun filterFruits(fruits: List, filter: FruitFilter) { } typealias USGTMap = Map data class UltraSuperGuardianTribe( val name: String ) typealias: 긴 이름의 클래스 혹은 타입이 있을 때 축약하거나 더 좋은 이름을 쓰고싶을 때 사용할 수 있다. as import Kotlin import com.heekng.kotlinStudy.kotlin.lec12.Person as PersonA import com.heekng.kotlinStudy.kotlin.lec16.Person a.. 2022. 7. 7.
[Kotlin] 컬렉션을 함수형으로 사용하기 컬렉션을 함수형으로 사용하기 필터와 맵 filter filterIndexed: filter에 index를 포함하여 사용 map mapIndexed: map에 index를 포함하여 사용 mapNotNull: mapping의 결과가 null이 아닌 것만 가져와 map 다양한 컬렉션 처리 기능 all: 조건을 모두 만족하면 true 그렇지 않으면 false none: 조건을 모두 불만족하면 true 그렇지 않으면 false any: 조건을 하나라도 만족하면 true 그렇지 않으면 false count(): 개수를 센다. sortedBy: 오름차순 정렬 sortedByDescending: 내림차순 정렬 distinctBy: 변형된 값을 기준으로 중복을 제거한다. first(): 첫번째 값을 가져온다 (무조건 n.. 2022. 7. 7.
[Kotlin] 람다 람다 Java에서의 람다 자바에서는 메서드 자체를 직접 넘겨주는 것처럼 사용할 수 있다.(Predicate 사용) 즉, 2급 시민. Java에서는 함수는 변수에 할당되거나 파라미터로 전달할 수 없다. Kotlin에서의 람다 Kotlin fun main() { val fruits = listOf( Fruit("사과", 1_000), Fruit("사과", 2_000), Fruit("사과", 1_200), Fruit("사과", 1_500), Fruit("바나나", 3_000), Fruit("바나나", 3_200), Fruit("바나나", 2_500), Fruit("사과", 10_000) ) // 람다를 만드는 방법 1 /* val isApple = fun(fruit: Fruit): Boolean { retur.. 2022. 7. 7.
[Kotlin] 함수 함수 확장함수 Kotlin fun main() { val str = "ABC" println(str.lastChar()) println(str.lastChar) } fun String.lastChar(): Char { return this[this.length - 1] } val String.lastChar: Char get() = this[this.length - 1] 코틀린은 자바와 100% 호환되기를 목표로 했다. 기존 Java 코드 위에 자연스럽게 코틀린 코드를 추가하려 했다. -> 어떤 클래스 안에 있는 메서드처럼 호출할 수 있지만, 함수는 밖에 만들 수 있게 하자! fun 확장하려는클래스.함수명을 이용해 함수를 확장한다. 함수 안에서는 this를 통해 인스턴스에 접근 가능하다. this: 수신.. 2022. 7. 7.
[Kotlin] 배열과 컬렉션 배열과 컬렉션 배열 Kotlin // 배열 만들기 val array = arrayOf(100, 200) // 값 넣기 array.plus(300) // 인덱스로 반복 for (i in array.indices) { println("${i} ${array[i]}") } // 인덱스와 값 모두 가져오기 for ((idx, value) in array.withIndex()) { println("$idx, $value") } 배열은 잘 사용하지 않는다. 배열보다는 리스트를 사용하자. array.indices는 0부터 마지막 index까지의 Range이다. array.withIndex()를 사용하면, 인덱스와 값을 한번에 가져올 수 있다. array.plus()를 사용하면 값을 추가할 수 있다. Collectio.. 2022. 7. 7.
[Kotlin] Data, Enum, Sealed 클래스 Data, Enum, Sealed 클래스 Data Class Java public class JavaPersonDto { private final String name; private final int age; public JavaPersonDto(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) retur.. 2022. 7. 6.
[Kotlin] 중첩 클래스를 다루는 방법 중첩 클래스를 다루는 방법 중첩 클래스의 종류 Java 기준 static을 사용하는 중첩 클래스: 클래스 안에 static을 붙인 클래스, 밖의 클래스를 직접 참조하지 못한다. Java 기준 static을 사용하지 않는 중첩 클래스 내부 클래스(Inner Class): 클래스 안의 클래스, 밖의 클래스를 직접 참조할 수 있다. 지역 클래스(Local Class): 메서드 내부에 클래스를 정의 익명 클래스(Anonymous Class): 일회성 클래스 코틀린의 중첩 클래스와 내부 클래스 Java public class JavaHouse { private String address; private LivingRoom livingRoom; public JavaHouse(String address, Living.. 2022. 7. 6.
[Kotlin] object를 다루는 방법 Object를 다루는 방법 static 함수와 변수 Java public class JavaPerson { private static final int MIN_AGE = 1; public static JavaPerson newBaby(String name) { return new JavaPerson(name, MIN_AGE); } private String name; private int age; private JavaPerson(String name, int age) { this.name = name; this.age = age; } } Kotlin class Person private constructor(var name: String, var age: Int) { companion object Fa.. 2022. 7. 6.
[Kotlin] 접근제어를 다루는 방법 접근제어를 다루는 방법 자바와 코틀린의 가시성 제어 자바의 접근 제어 public: 모든 곳에서 접근 가능 protected: 같은 패키지 또는 하위 클래스에서만 접근 가능 default: 같은 패키지에서만 접근 가능 private: 선언된 클래스 내에서만 접근 가능 코틀린의 접근 제어 public: 모든 곳에서 접근 가능 protected: 선언된 클래스 또는 하위 클래스에서만 접근 가능 internal: 같은 모듈에서만 접근 가능 private: 선언된 클래스 내에서만 접근 가능 코틀린에서는 패키지를 namespace를 관리하기 위한 용도로만 사용한다. 가시성 제어에는 사용되지 않는다. 모듈: 한 번에 컴파일 되는 kotlin 코드 자바의 기본 접근 지시어는 default이지만, 코틀린은 public.. 2022. 7. 6.