람다
-
메소드 래퍼런스백기선(인프런 강의)/더 자바, Java 8 2020. 7. 7. 23:47
람다가 하는 일이 기존 메소드 또는 생성자를 호출하는 거라면, 메소드 레퍼런스를 사용해서 매우 간결하게 표현할 수 있다. 메소드 참조하는 방법 스태틱 메소드 참조 타입::스태틱 메소드 특정 객체의 인스턴스 메소드 참조 객체 레퍼런스::인스턴스 메소드 임의 객체의 인스턴스 메소드 참조 타입::인스턴스 메소드 생성자 참조 타입::new 메소드 또는 생성자의 매개변수로 람다의 입력값을 받는다. 리턴값 또는 생성한 객체는 람다의 리턴값이다. 참고 https://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html 예제 import java.util.Arrays; import java.util.function.Function; import java...
-
람다 표현식백기선(인프런 강의)/더 자바, Java 8 2020. 7. 7. 22:38
람다 (인자 리스트) -> {바디} 인자 리스트 인자가 없을 때: () 인자가 한개일 때: (one) 또는 one 인자가 여러개 일 때: (one, two) 인자의 타입은 생략 가능, 컴파일러가 추론(infer)하지만 명시할 수도 있다. (Integer one, Integer two) 바디 화상표 오른쪽에 함수 본문을 정의한다. 여러 줄인 경우에 { }를 사용해서 묶는다. 한 줄인 경우에 생략 가능, return도 생략 가능. 변수 캡처 (Variable Capture) 로컬 변수 캡처 final이거나 effective final 인 경우에만 참조할 수 있다. 그렇지 않을 경우 concurrency 문제가 생길 수 있어서 컴파일가 방지한다. effective final 이것도 역시 자바 8부터 지원하는 ..
-
함수형 인터페이스와 람다 표현식백기선(인프런 강의)/더 자바, Java 8 2020. 7. 6. 09:02
함수형 인터페이스(Funtional Interface) 추상 메소드를 딱 하나만 가지고 있는 인터페이스 SAM(Single Abstract Method) 인터페이스 @FunctionalInterface 애노테이션을 가지고 있는 인터페이스 람다 표현식(Lambda Expressions) 함수형 인터페이스의 인스턴스를 만드는 방법으로 쓰일 수 있다. 코드를 줄일 수 있다. 메소드 매개변수, 리턴타입, 변수로 만들어 사용할 수 있다. 자바에서 함수형 프로그래밍 함수를 First class object로 사용할 수 있다. 순수함수(Pure function) 사이드 이펙트를 만들 수 없다.(함수 밖에 있는 값을 변경하지 못한다.) 상태가 없다.(함수 밖에 정의되어있는) 고차 함수(High-Order Fucntio..