Stream Stream 소개 sequence of elements supporting sequential and parallel aggregate operations 데이터를 담고 있는 저장소 (컬렉션)이 아니다. Functional in nature, 스트림이 처리하는 데이터 소스를 변경하지 않는다. 스트림으로 처리하는 데이터는 오직 한번만 처리한다. 무제한일 수도 있다. (Short Circuit 메소드를 사용해서 제한할 수 있다.) 중개 오퍼레이션은 근본적으로 lazy 하다. 손쉽게 병렬 처리할 수 있다. 스트림 파이프라인 0 또는 다수의 중개 오퍼레이션(intermediate operation)과 한개의 종료 오퍼레이션(terminal operation)으로 구성한다. 스트림의 데이터 소스는 오직 터미널 오.. JAVA/JAVA8 4년 전
인터페이스의 변화 인터페이스 기본 메소드와 스태틱 메소드 기본 메소드(Default Methods) 인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법 해당 인터페이스를 구현할 클래스를 깨트리지 않고 새 기능을 추가할 수 있다. 기본 메소드는 구현체가 모르게 추가된 기능으로 그만큼 리스크가 있다. 컴파일 에러는 아니지만 구현체에 따라 런타임 에러가 발생할 수 있다. 반드시 문서화 할것. (@ImplSpec 자바독 태그 사용 Object가 제공하는 기능 (equals, hasCode)는 기본 메소드로 제공할 수 없다. 구현체가 재정의해야 한다. 본인이 수정할 수 있는 인터페이스에만 기본 메소드를 제공할 수 있다. 인터페이스를 상속받는 인터페이스에서 다시 추상 메소드로 변경할 수 있다. 인터페이스 구현체가 재정의 할 수.. JAVA/JAVA8 4년 전
함수형 인터페이스와 람다 함수형 인터페이스와 람다 표현식 소개 @FunctionalInterface public interface RunSomthing { //추상 메서드가 하나만 있으면 함수형 인터페이스 //abstract 생략 //어노테이션을 붙여주는게 좋음 //추상 메서드의 수가 중요함 void doIt(); //int doIt(int number); //static 메서드를 정의가 가능 (인터페이스임에도 불구하고) static void printName() { System.out.println("Tistory"); } //default 메서드도 정의 가능 default void printAge() { System.out.println("27"); } } public class Foo { public static void .. JAVA/JAVA8 4년 전