공부일기/Java 8
-
Java 8 - 2. 인터페이스의 변화공부일기/Java 8 2020. 12. 7. 20:17
1. 인터페이스 기본 메소드와 스태틱 메소드 기본 메소드 (Default Methods) 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법 해당 인터페이스를 구현한 클래스를 깨트리지 않고 새 기능을 추가할 수 있다. 기본 메소드는 구현체가 모르게 추가된 기능으로 그만큼 리스크가 있다. 컴파일 에러는 아니지만 구현체에 따라 런타임 에러가 발생할 수 있다. 반드시 문서화 할 것. (@implSpec 자바독 태그 사용) Object가 제공하는 기능 (equals, hasCode)는 기본 메소드로 제공할 수 없다. 구현체가 재정의해야 한다. 본인이 수정할 수 있는 인터페이스에만 기본 메소드를 제공할 수 있다. 인터페이스를 상속받는 인터페이스에서 다시 추상 메소드로 변경할 수 있다. 인터페이스 구현체가 재..
-
Java 8 - 1. 함수형 인터페이스와 람다 표현식공부일기/Java 8 2020. 12. 6. 20:13
1. 함수형 인터페이스란? 추상 메소드를 단 하나만 가지고 있는 인터페이스 static 메소드나, default 메소드는 몇 개를 갖고 있던 상관없으나 추상메소드는 단 하나여야 한다. @FunctionalInterface 어노테이션을 지닌 인터페이스 2. 람다 표현식이란? 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다. 함수형 인터페이스를 구현할 때 쓸 수 있는 표현 방법으로 코드를 간결하게 할 수 있다. 메소드의 매개변수, 리턴 타입, 변수로 만들어 사용할 수 있다. 3. 자바에서 함수형 프로그래밍 순수 함수 (Pure function) 함수 밖에 있는 값을 참조하거나 변경하려 하면 안 된다. 오직 함수 내부에서 쓰는 값(매개변수)만 사용하는 것을 지향해야 한다. 사이드 이팩트가 없다. ..