애노테이션 선언과 적용 코틀린 애노테이션도 자바 애노테이션과 개념은 동일하다. 메타 데이터를 선언에 추가할 경우 애노테이션을 처리하는 도구가 컴파일 또는 실행 시점에 적절한 처리를 수행한다. 애노테이션 적용 자바와 동일한 방법으로 애노테이션 사용이 가능하다. @Depreacted 애노테이션을 예로 살펴보면, 자바와 코틀린에서 의미는 동일하다. 하지만 코틀린에서는 replaceWith 파라메터를 통해 이전 버전을 대신할 패턴을 제시할 수 있다. /** * 코틀린의 @Deprecated 는 자바와 동일한 의미를 가진다. * 하지만 ReplaceWith 파라메터를 통해 이전 버전을 대신할 패턴을 제시할 수 있다. */ @Deprecated("Use removeAt(index) instead. ", Replac..
서론 실체화한 타입 파라미터를 사용하면, 런타임 시점에 이를 활용할 수 있다. - 일반 클래스 혹은 함수는 런타임 시점에 타입 정보가 사라진다. 선언 지점 변성을 사용하는경우 기저 타입은 동일하지만, 타입 인자가 다른 두 제네릭 타입의 상위/하위 타입 관계에 따라 상위/하위 타입 관계가 어떻게 되는지 지정이 가능해진다. 기저 타입이란 ? List 와 List 이 기반 - 파생 타입 관계로 보기 어렵기 때문에, 제네릭에서는 타입 파라미터를 제외한 부분을 기저 타입이라는 용어로 사용한다. List 에서 기저 타입은 List 이다. 제네릭 타입 파라미터 제네릭을 사용하면 타입 파라미터 (type parameter) 를 받는 타입을 정의할 수 있다. 제네릭 타입의 인스턴스를 생성하려면 , 타입 파라미터를 구체적..
고차함수 란 ? 고참함수는 다른 함수를 인자로 받거나 함수를 반환하는 함수이다. 코틀린에서는 람다나 함수 참조를 사용해 함수를 값으로 표현할 수 있다. 함수 타입 코틀린에서 함수 타입을 정의하려면, 함수 파라미터의 타입을 괄호 안에 넣고, 그 뒤에 화살표를 추가 한 뒤 함수 반환 타입을 지정하면 된다. - (Int, String) -> Unit 반환 타입이 널이거나, 함수 타입 전체가 널일 수 있는 변수를 선언할 때는 주의해야 한다. - (Int, Int) -> Int? : 반환 타입이 널 - ((Int, Int) -> Int?)? : 함수 타입 전체가 널 파라미터 이름과 함수 타입 함수 타입에서 파라미터 명을 지정할 수 있다. 강제적인 것은 아니며, 호출하는 쪽에서 원하는 파라미터 명으로 변경하여 사용..
서론 자바에서는 for..in 루프에 java.lang.Iterable 구현체를 사용하거나, try-with resource 구문에 java.lang.AutoCloseable 구현체를 사용할 수 있다. 이와 비슷하게 코틀린에서도 언어의 기능이 사용자가 작성한 함수와 연결되는 몇가지가 있으며 이를 살펴본다. 산술연산자 오버로딩 코틀린에서 관례를 사용하는 가장 단순한 예는 산술연산자 이다. BigInteger 클래스를 다룬다면 add 함수 호출보단 + 연산하는것이, 컬렉션에 원소를 추가하는 경우 += 이 가능하다면 더 직관적이다. 코틀린에서는 이러한 것들이 가능하다. 이항 산술연산 오버로딩 코틀린에서는 plus 라는 이름의 메소드를 정의하면, 해당 인스턴스에 대해 + 연산자를 사용할 수 있다. 이때 plus..