책/모던 자바 인 액션

인터페이스를 바꾸면 인터페이스를 구현한 모든 클래스도 모두 고쳐야 하지만 java 8에서는 기본 구현을 포함하는 인터페이스를 정의하는 2가지 방법이 있다. 인터페이스 내부에 정적 메서드 사용하기 기본 구현을 제공할 수 있도록 디폴트 메서드 기능을 사용하기 기존 인터페이스를 구현하는 클래스는 자동으로 인터페이스에 추가된 새로운 메서드의 디폴트 메서드를 상속받게 된다. 더보기 각각의 호환성은 low level 공부를 좀 하고 다시 알아보자 디폴트 메서드란 무엇인가? 공개된 API에 새로운 메서드를 추가하면(구현하고 있는 클래스들 override해야되는) 문제로 java 8 에서는 호환성을 유지하면서 API를 바꿀 수 있도록 default method를 제공한다. default method는 인터페이스 구현체..
LocalDate, LocalTime, Instant, Duration, Period 클래스 (java.time 패키지) Month의 인덱스는 0부터 시작, DateFormat같은 기능은 Date클래스에만 작동, 스레드가 동시에 하나의 formatter로 날짜를 파싱할 때 예기치 못한 결과가 일어나는 다양한 이슈들로 인해 java8에서 시간 라이브러리(Joda-Time)의 많은 기능을 java.time 패키지로 추가했다. LocalDate와 LocalTime 사용 팩토리 메서드 of로 LocalDate 인스턴스를 만들 수 있으며 now는 시스템 시계의 정보를 이용해서 현재 날짜 정보를 얻는다. LocalDate date = LocalDate.of(1999, 9, 27); LocalDate now = Lo..
예기치 않은 NullPointException을 피하기 위해 필요한 곳에 다양한 null 확인 코드를 추가해서 null 예외 문제를 해결해야 한다. null이 들어오지 않는 영역을 제외하고는 변수를 참조할 때마다 null을 확인해야 한다. public String getCarInsuranceNameNullSafe(Person person) { String unknown = "Unknown"; if (person == null) { return unknown; } CarV1 car = person.getCar(); if (car == null) { return unknown; } Insurance insurance = car.getInsurance(); if (insurance == null) { retu..
개발팀과 도메인 전문가가 이해할 수 있는 코드는 생산성과 직결되기 때문에 코드는 읽기 쉽고 이해하기 쉬워야 한다. 도메인 전용 언어(DSL)는 특정 도메인을 대상으로 만들어진 프로그래밍 언어로 이 문제를 해결할 수 있다. 도메인 전용 언어(domain-specific languages, DSL) DSL은 범용 프로그래밍 언어가 아니며, 특정 비즈니스 도메인의 문제를 해결하려고 만든 언어다. 특정 도메인에만 국한되므로 오직 자신의 문제를 어떻게 해결할지에만 집중할 수 있고 특정 도메인의 복잡성을 잘 다룰 수 있다. DSL을 개발하기 위한 두가지 필요성 의사 소통의 왕: 프로그래머가 아닌 사람도 이해할 수 있도록 코드의 의도가 명확히 전달되어야 한다.(코드가 비즈니스 요구사항에 부합하는지 확인할 수 있다.)..
일반적으로 코드 가독성이 좋다는 것은 '어떤 코드를 다른 사람도 쉽게 이해할 수 있음'을 의미한다. 익명 클래스를 람다 표현식으로 리팩터링하기 하나의 추상 메서드를 구현하는 익명 클래스는 람다 표현식으로 리팩터링할 수 있다. new Thread(new Runnable() { @Override public void run() { System.out.println("Hi~"); } }).start(); new Thread(()-> System.out.println("Hi~")).start(); 익명 클래스를 람다 표현식으로 변환하기 위한 조건 익명 클래스에서 사용한 this와 super는 람다 표현식에서 다른 의미를 갖는다. 익명 클래스에서 this는 익명 클래스 자신을 가르키지만 람다에서 this는 람다를..
uhanuu
'책/모던 자바 인 액션' 카테고리의 글 목록