Type Alias와 as import Type Alias 긴 이름의 클래스 혹은 함수 타입이 있을 때 축약하거나 더 좋은 이름을 쓰고 싶은 경우 사용한다. fun filterFruits(fruits: List<Fruit>, filter: (Fruit) -> Boolean) {} filter 라는 함수를 파라미터로 받고 ...
Kotlin - ( Type Alias, as import / componetN / Jump, Label / TakeIf, TakeUnless )
Kotlin - 람다 그리고 컬렉션을 함수형으로 다루는 방법
람다 코틀린은 Java와 근본적으로 다른 한 가지가 있다. 바로 코틀린에서는 함수가 그 자체로 값이 될 수 있다는 점이다. 따라서 변수에 할당할 수도 파라미터로 넘길 수도 있다. 이 부분을 염두해두고 코틀린에서 람다를 어떻게 활용하는 지 보자. fun main() { val fruits = listOf( Fruit("사과", 1_000),...
Kotlin - 코틀린의 다양한 메서드
코틀린 메서드 확장 함수 infix 함수 (중위 함수) inline 함수 지역 함수 확장 함수 우선 확장 함수가 나타나게 된 배경부터 알아보자. Kotlin은 Java와 100% 호환하는 것을 목표로 한다. 이런 목표로 인해 기존 Java 코드 위에 자연스럽게 Kotlin 코드를 추가할 수 있는 방안에 대해 고민하게 된다. ...
Kotlin - 배열 및 컬렉션
배열 및 컬렉션 배열 배열은 프로덕션에서 잘 사용하지 않는다. 컬렉션을 주로 사용하기 때문이다. Effective Java에서도 배열의 사용보다 리스트의 사용을 권장하고 있다. 그러나 문법은 우선 알아둘 필요가 있다. 코틀린에서는 배열을 어떻게 표현할까? fun main() { val array = arrayOf(100, 200) arr...
Kotlin - 중첩 클래스와 다양한 클래스 (Data, Enum 등)
중첩 클래스 자바에서의 중첩 클래스 Static을 사용하는 중첩 클래스 클래스 안에 static을 붙인 클래스로 밖의 클래스를 직접적으로 참조할 수 없다. Static을 사용하지 않는 중첩 클래스 내부 클래스 지역 클래스 익명 클래스 코틀린에서의 ...
Kotlin - 접근제어와 object 키워드
접근 제어 자바와 코틀린의 가시성 제어 Java public: 모든 곳에서 접근 가능 protected: 같은 패키지 또는 하위 클래스에서만 접근 가능 default: 같은 패키지에서만 접근 가능 private: 선언된 클래스 내에서만 접근 가능 Kotlin ...
Kotlin - 상속
추상 클래스 인터페이스 클래스 상속 시 주의할 부분 상속 관련 지시어 상속 추상 클래스 Animal이라는 추상 클래스를 구현한 Cat, Penguin 클래스를 만들어보자. 자바 코드와 코틀린 코드를 비교해보자. Animal public abstract class Animal { protected final Stri...
Kotlin - 클래스
클래스 클래스와 프로퍼티 public class Person { private final String name; private int age; Person(String name, int age) { this.name = name; this.age = age; } //getter, setter.. } 위와 같은 Person ...
Kotlin - 기본적인 함수
람다같은 것이 아닌 기본적으로 코틀린에서 함수를 어떻게 다루는 지 알아보자. 함수 선언 문법 default parameter named argument (parameter) 같은 타입의 여러 파라미터를 받는 방법 함수 함수의 선언 정수 a, b를 받아 더 큰 수를 return하는 함수를 만들어보자. fun max(a: Int...
Kotlin - 예외
try catch finally Checked Exception / Unchecked Exception try with resources 예외 try catch finally 우선 자바 코드를 보자. private int parseIntOrThrow(@NotNull String str) { try { return Intege...