스터디/이펙티브코틀린

아이템 3 - 최대한 플랫폼 타입을 사용하지 말라

코틀린의 주요 기능 중 하나인 널 안정성 덕분에 자바를 사용하면서 자주 보던 NullPointerException을 덜 볼 수 있게 되었다. 하지만 널 안정성 기능이 없는 타 언어(Java, C) 등과 코틀린을 같이 사용하고 코틀린이 다른 언어를 이용하여 사용하는 경우 널 안정성이 보장되지 않아 NullPointerException을 만나게 될 수 있다. 자바의 경우 String 반환 타입에 어노테이션으로 @NotNull 혹은 @Nullable 의 존재 유무로 코틀린에서 String으로 사용할지 String? 으로 사용할지 구분지을수 있다. 하지만 어노테이션이 붙어있지 않다면 기본적으로 nullable 할수 있기 때문에 String? 으로 가정하고 다루어야 한다. 그러니 자바와 코틀린을 함께 사용하는 상..

2022.02.27 게시됨

스터디/이펙티브자바

[아이템3] private 생성자나 열거 타입으로 싱글턴임을 보증하라

아이템 3 private 생성자나 열거타입으로 싱글턴임을 보증하라 p.23 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트를 테스트하기가 어려워질 수 있다. 타입을 인터페이스로 정의한 다음 그 인터페이스를 구현해서 만든 싱글턴이 아니라면 mock 구현으로 대체할 수 없기 때문이다. 인터페이스 없이 구현한 싱글턴 코드 public class Validator { private static final Validator INSTANCE = new Validator(); public static final Validator getInstance() { return INSTANCE; } private int bound; private Validator() { this.bound = 10; } public vo..

2020.01.17 게시됨