널 가능성 널 가능성 (Nullablility) 은 NPE를 피하기 위한 코틀린 타입 시스템의 특성이다. 코틀린을 비롯한 최신 언어에서는 null을 컴파일 타임에 미리 감지해 런타임 예외 가능성을 줄인다. 널이 될 수 있는 타입 코틀린 타입 시스템은 널이 될수 있는 타입을 명시적으로 지원한다. 널이 될 수 있는 변수에 대해 메소드 호출을 하지 못하게 함으로써 많은 오류를 방지한다. /** * null 이 올수 있는 타입을 넣을 경우 컴파일 에러를 발생시켜 NPE를 방지한다. */ fun strLen(s: String) = s.length fun strLenNullable(s: String?) = s.length fun main(args: Array) { // null 이 올 수 있는 타입을 넣을 경우 컴..
람다란 ? 람다식 (lambda expression) 은 기본적으로 다른 함수에 넘길 수 있는 작은 코드 조각 이다. 람다를 사용하면, 공통 코드 구조를 라이브러리화 하기 쉽다. 코틀린 표준 라이브러리는 람다를 아주 많이 사용한다. 람다 소개 - 코드 블록을 함수 인자로 넘기기 자바에서는 익병 내부 클래스를 통해 코드를 함수에 넘기거나 변수에 저장하는 방식을 사용했다. - 클래스를 선언하고, 클래스를 인스턴스화 해서 함수에 넘기는 방법을 채용 - 이는 매우 번거로운 일이다. 함수형 프로그래밍에서는 함수를 값 처럼 다룰수 있는것이 핵심 - 함수를 직접 다른 함수에 전달할 수 있다. `java` button.setOnClickListener(new OnClickLisntener() { @Override pu..
코틀린 인터페이스 코틀린의 인터페이스는 Java8의 인터페이스와 유사하다. 구현을 가지는 메소드가 존재할 수 있으며, 인터페이스를 구현하는 클래스에서 메소드를 구현할때 override 변경자를 사용해 주어야한다. (이는 자바의 @Override 애노테이션과 비슷하다.) 자바와 달리 반드시 사용해야 한다. interface Clickable { fun click() fun showOff() = println("I'm clickable!") } class Button: Clickable { override fun click() = println("I was Clicked") } fun main(args: Array) { Button().click() } 만약 둘 이상의 기본 구현이 존재하는 경우, 구현 클래..
코틀린에서 컬렉션 만들기 코틀린에서는 다양한 컬렉션을 지원한다. 코틀린 고유의 컬렉션이 아닌 자바 표준 컬렉션을 사용한다. 다음은 코틀린에서 컬렉션을 사용하는 샘플 중 하나이다. /** * setOf 외에도 아래와 같은 방법으로 다양한 컬렉션을 생성할 수 있다. * map을 생성할때는 to 를 사용하는데 이는 키워드가 아닌 일반 함수이다. * 코틀린은 코틀린의 컬렉션을 사용하지않고 표준 자바 컬렉션을 사용한다. * 이는 자바와 상호작업하게 훨씬 쉽게 때문이다. */ val set = hashSetOf(1, 7, 53) val list = arrayListOf(1 , 7, 53) val map = hashMapOf(1 to "one", 7 to "seven", 53 to "fifty-three") /** ..