목록개발새발/더 자바, Java 8 (4)
JaPark Bug World
메소드 레퍼런스 람다가 하는 일이 기존 메소드 또는 생성자를 호출하는 거라면, 메소드 레퍼런스를 사용해서 매우 간결하게 표현할 수 있다. 메소드 참조하는 방법 스태틱 메소드 참조 타입::스태틱 메소드 특정 객체의 인스턴스 메소드 참조 객체 페퍼런스::인스턴스 메소드 임의 객체의 인스턴스 메소드 참조 타입::인스턴스 메소드 생성자 참조 타입::new 메소드 또는 생성자의 매개변수로 람다의 입력값을 받는다. 리턴값 또는 생성한 객체는 람다의 리턴값이다. 이해를 돕기 위해 만들어 둔 Greeting Class public class Greeting { private String name; public Greeting() {} public Greeting(String name) { this.name = name..
람다 표현식 람다 (인자 리스트) -> {바디} 인자 리스트 인자가 없을 때 : () 인자가 한개일 때 : (one) 또는 one 인자가 여러개 일 때 : (one, two) 인자의 타입은 생략 가능, 컴파일러가 추론(infer)하지만 명시 가능, (integer one, integer two) // 인자가 없을 시 Supplier getTen = () -> 10; // 인자가 한개 일 시 Function oneParam = (i) -> i; // 인자가 여러개 일 때 BiFunction biFunc = (integer, integer2) -> integer + integer2; 바디 화살표 오른쪽에 함수 본문을 정의한다. 여러 줄인 경우에 {}를 사용해서 묶는다 한 줄인 경우에 생략 가능, return..
자바에서 제공하는 함수형 인터페이스 Java가 기본으로 제공하는 함수형 인터페이스 java.lang.function 패키지 자바에서 미리 정의해둔 자주 사용할만한 함수 인터페이스 Function BiFuncion Consumer Supplier Predicate UnaryPerator BinaryOperator 함수 인터페이스를 만들지 않고 자바에서 미리 정의해둔 함수를 가지고도 구현이 가능하다. Function T 타입을 받아서 R 타입을 리턴하는 함수 인터페이스 R apply(T t) import java.util.function.Function; public class Plus10 implements Function { @Override public Integer apply(Integer integ..
함수형 인터페이스와 람다 표현식 소개 함수형 인터페이스(Functional interface) 추상 메소드를 딱 하나만 가지고 있는 인터페이스 SAM(single Abstract Method) 인터페이스 @FunctionalInterface 애노테이션을 가지고 있는 인터페이스 // @FunctionalInterface 사용하여 오로지 추상메서드 하나만 존재하도록 명시 @FunctionalInterface public interface RunSomething { // abstract는 생략할 수 있다. void doIt(); } > @FunctionalInterface을 선언하게 되면 메소두가 2개인 경우 error 발생 람다 표현식(Lambda Expresstions) 함수형 인터페이스의 인스턴스를 만드..