코틀린 (Kotlin)/자바에서 코틀린으로
자바에서 코틀린으로 6장 - 자바에서 코틀린 컬렉션으로 요약
주안점 자바에서 출발한 컬렉션은 코틀린으로 오며 왜 지금의 형태를 띄게 되었는가? 자바 컬렉션 자바 컬렉션의 가변성은 처음에는 혁신적인 무기였음. 자바 컬렉션은 극단적 가변 컬렉션 컬렉션을 자유롭게 변경시켜 이용하며, sort, reverse 와 같은 메서드들은 이를 편하게 만들어 도왔음. 가변 때문에 만나게 된 에러 public static int sufferScoreFor(List route) { Location start = getDepartsFrom(route); List longestJourneys = longestJourneysIn(route, 3); return sufferScore(longestJourneys, start); } start 변수를 따로 빼둔 것이 별다른 정보를 알려주지 않기..
자바에서 코틀린으로 5장 - 빈에서 값으로 요약
자바 빈 최초에는 GUI 개발을 지원하기 위해 태어났다. GUI 에서의 많은 프로퍼티 (패딩, 높이, 너비 등) 를 적절하게 컨트롤하기 위해 Getter 와 Setter 가 기본으로 장착됐다. 이 당시엔 UI 툴킷과 일반 객체 모두 가변 컴포넌트 모델이 옳다는 사고관을 가지고 있었다. 근래엔 객체로 표현하고 싶은 대부분의 대상에는 '자바빈즈' 보다는 '값(불변)' 이 더 낫다고 여겨진다. 자바에서의 가변 객체들은 최근 복잡도를 높이는 문제가 되어가고 있다. 값 혹은 불변을 선호해야 하는 이유 가변 객체보다 추론이 쉽다. 맵의 키, 집합 원소로 활용 가능하다. (의미론적 동치 판단이 쉽다.) 컬렉션으로 사용하는 경우, 원소가 달라질지 염려할 필요가 없다. 초기 상태를 복사하지 않고도 다양한 시나리오를 탐험..
자바에서 코틀린으로 4장 - 옵셔널에서 널이 될 수 있는 타입으로 요약
Null 의 표현 방식 기존 자바 ...OrNull 이라는 네이밍 사용 @Nullable, @NotNullable 애노테이션 사용 자바 8 Optional 등장 코틀린의 Null 처리 전략 null 을 포용한다. 코틀린에서는 Optional 을 쓰면, Null 가능성을 지원하기 위한 설계를 활용할 수 없다. Optional 과 String? 는 큰 차이가 있음 String? 는 String 의 하위타입이지만, Optional 은 String 의 하위 타입이 아님. Optional 때문에 코드가 번잡해지고, 리팩토링 시에도 고쳐야 할 코드가 많아짐. 코드 보기 리팩토링 전 (자바) public class Legs { public static Optional findLongestLegOver( List le..
자바에서 코틀린으로 3장 - 자바클래스에서 코틀린 클래스로 요약
요약 생성자의 형태가 다르다. 자바 버전 public class EmailAddress { private final String localPart; private final String domain; public EmailAddress(String localPart, String domain) { this.localPart = localPart; this.domain = domain; } public String getLocalPart() { return localPart; } public String getDomain() { return domain; } public static EmailAddress parse(String value) { var atIndex = value.lastIndexOf('@..