공부하는 블로그

JAVA 8 Programming 시작하기 본문

Develop/JAVA

JAVA 8 Programming 시작하기

모아&모지리 2017. 10. 31. 10:48

도래: 프로그래밍 패러다임의 변화

절차지향언어( 개발 어려움, 유지보수 어려움 ) ->

함수지향언어( C언어..등등 ) ->

객체지향언어( 실세계와 같은 객체를 만듬 , C++, JAVA, C#..) / 웹의 발명으로 객체지향언어가 발전 ->


IOT급부상으로 -- >> 함수지향언어(F#, R, Scala,Python,Kotlin): 호출만 함, 빠름 , 데이터분석할 때 사용


JAVA가 함수지향언어로 변했다.


---Lambda Expression --


질문) Java에서 Method를 Parameter로 전달할 수 있다. ( X )

지금까지 배운 JAVA는 항상 객체지향이다.


interface Do(); --> new Do() { // implement정의

  }


람다(Lambda)란?
람다 미적분학 학계에서 개발할 시스템에서 유래함.
메소드에게 전달할 수 있는 익명 클래스를 함수로 단순화 시킨 것.

람다의 특징
익명 : 보통의 메소드와 달리 이름이 없다.
함수 : 특정 클래스에 종속되지 않아 함수라 부른다.
전달 : 람다 표현식을 메서드의 인자로 전달하거나 변수로 저장할 수 있다.
간결성 : 익명 클래스처럼 자질구레한 코드를 구현할 필요가 없다.


람다의 적용


타입을 추론해서 들어간다.


람다의 구성

람다 파라미터
Compartor의 compare 메소드의 파라미터 (두 명의 사원)
화살표 ( -> )
람다의 파라미터 리스트와 바디를 구분함.
람다 바디
두 명의 사원 번호를 구분함. 람다의 반환값에 해당하는 표현식.

함수형 인터페이스
람다는 함수형 인터페이스를 파라미터로 받는 메소드에게만 사용할 수 있다.
함수형 인터페이스는 오직 하나의 추상메소드만 지정되어 있는 인터페이스를 말한다.
Comparator 인터페이스의 추상메소드는 int compare(T o1, T 02); 하나.

함수형 인터페이스의 종류
Predicate<T> : 파라미터 하나를 전달받아, boolean을 반환하는 함수형 인터페이스
BiPredicate<L, R> : 파라미터 L과 R을 전달받아 boolean을 반환하는 함수형 인터페이스

Consumer<T> : 파라미터 하나를 전달받아, void를 반환하는 함수형 인터페이스
BiConsumer<T, U> 파라미터 T와 U를 전달받아 void를 반환하는 함수형 인터페이스
Function<T, R> : 파라미터 T를 전달받아 R을 반환하는 함수형 인터페이스
BiFunction<T, U, R> : 파라미터 T와 U를 전달받아 R을 반환하는 함수형 인터페이스


//


abstact 클래스는 lambda사용못함


'Develop > JAVA' 카테고리의 다른 글

JAVA 8 메소드 레퍼런스  (0) 2017.10.31
JAVA 8 프로그래밍 예제 1  (0) 2017.10.31
생성자 멤버변수 예제  (0) 2017.09.04
JAVA 생성자  (0) 2017.09.04
자바(Java)〃접근 제한자 private/ protected/ public / default  (0) 2017.09.01