-
Java 8 이상 쓰는 곳이 거의 없다.
-
자바코드는 장황하다?
-
롬복(Lombok)
-
롬복이 지원안될 수 있다.
-
Annotation Processor 와 충돌 가능성
-
-
Kotlin
Object().apply { }
으로 빌더 흉내가능
-
-
import 가 없는데 이건 코틀린 지원
-
Kotlin 은 Java 와 Full 호환됨
-
Java 에서 Kotlin 호환도 된다.
-
-
var/val 은 getter/setter 와 한몸
-
스칼라를 하려다가…
-
상대적으로 느린 컴파일 속도
-
자바와 혼용이 어려운 부분 존재
-
문법 어려움
-
하위 버전 바이너리 호환성을 버린 경우가 있었음
-
Null safety 지원 상대적으로 부족
-
스칼라 사용당시 이해도 부족
-
깃헙 코틀린 릴리즈 속도 빠름
-
IDE 지원이 코틀린에 비해 부족
-
-
Jetbrains IDE 지원
-
멀티 플랫폼 지원
-
안드로이드 공식 언어 2017년
-
컴파일러 레벨에서 NPE 차단
-
!!
는 가급적 사용금지 -
?:
엘비스 명령자: Null 인 경우 처리 -
Java 에서 작성한 코드는 원천적으로 Null 차단 불가
-
확장함수: IntelliJ 에서 노란색으료 표시되는 경우는 확장함수
-
자바에서 코틀린 확장함수는 static 메서드로 보인다.
-
Java 8을 위한 유틸리티 지원
-
유사? asSequence == Stream().stream()
-
코틀린 확장함수를 이용해서 보일럿 코리를 처리가능
-
-
if 는 구문이 아닌 식으로 표현가능
-
함수가 일급시민 이라면 어디에서든 담을 수 있다.
-
점진적 지원
-
왜 Effective java 인가
-
효율적이고 잘 설계된 자바 프로그램을 구현하기 위한 지침 소개
-
-
Effective Java 의 내용을 코틀린에 적용해가는 과정에 대한 이야기
-
나쁘지 않은 접근방법이라고 생각이 되는군.
-
object Elvis {
fun name() {}
}
-
클래스 인스턴스를 막고자 하는 경우:
private construct()
-
상속보다는 컴포지션을 사용하라
-
by s
인터페이스에서만 사용가능한 모든 구현을 넘기겠다. -
상속을 고려하여 설계하라. 그렇지 않다면 상속을 막아라.
-
코틀린에서는 오버라이드할 때 반드시 override 선언을 해야한다.
-
Kotlin List vs Java List
-
Kotlin List는 변경함수가 정의되어 있지 않음
-
실제 객체는 Mutable 이어도 클라이언테에게 List 타입으로 노출한다면 변경되지 않는다.
-
-
박싱된 기본 타입보다는 기본 타입을 사용하라.
-
기본타입 vs 박싱된 기본 타입
-
두 인스턴스는 값이 달라도 주소가 달라 서로 다르다고 식별할 수 있다.
-
박싱된 기본타입은 null 을 가질 수 있다.
-
박싱된 기본타입보다 쎼다.
-
-
코틀린은 박싱된 기본타입이 없다.
-
Nullable 여부에 따라서 박싱된 기본 타입 유형이 된다.
-
-
HashCode를 구현하는 방법
-
data class 를 구현하면 쉽게 사용
-
-
toString 을 항상 재정의하라.
-
클래스 정보를 유용하게…
-
-
checked Exception
-
단점
-
복구가 불가능한 상황에서도 처리해야함
-
클라이언트에게 너무 자세한 오류 정보를 제공
-
-
수많은 개발자들이 처리하지 않고 무시
-
지연 초기화는 delegated operator(
by lazy
)를 이용해서 가능
-
-
한정적 와일들카드를 사용해 API 유연성을 높여라.
-
우아한…?
-
Unit == Void
-
infix, 확장함수(Extension function)
-
Interface Consume
-
Interface Function
-
until
-
function literal with receiver: this?
-
공통된 기능에대해서는 확장함수를 사용하는게 좋은게냐?
-
T.()
-
Curring 을 이용한 작성방법
-
Function interface 를 잘 사용하는 게 중요한듯
infix fun <T> list<T>.valid(index: Int): (() -> T)? -> Supplier
-
코틀린이 자바를 사용할 때 중요한 것은 커뮤니케이션이다. 함수형 프로그래밍을 할 때 겪게되는 것과 유사한 경험.
-
Kotlin infix & Extension function 을 이용해서 함수를 만드는 것이 좋다.
-
함수형 프로그래밍을 통해서 간결한 코드를 만드는 것인가?
-
inline fun <reified T> 자바에서 T 타입 클래스를 접근할 수 있다.
Note
|
코틀린은 언어가 젊다는 생각이 든다. |
-
Kotlin Korea
-
Gradle Kotlin DSL
-
CLI → /greeting → function → CLI
-
IntelliJ Template 을 이용해서 생성하는 방법 나쁘지 않은데?? _) 호우호우
-
람다 실행을 위해서 박스툴(Boxtool)이 필요한겐가??
-
Function 등의 함수 인터페이스를 RxJava 를 이용하는구나. 그래서 조금 더 많이 자주 사용했던건가?