람다식 

: 함수적 프로그래밍( 병렬 처리와 이벤트 지향 프로그래밍에 적합)
자바 코드 간결해지고, 컬렉션 요소를 필터링 하거나 매핑해서 원하는 결과를 쉽게 집계 할 수 있기 때문에

 

- 람다식 형태 : 매개 변수를 가진 코드 블록이지만, 런타임 시 익명 구현 객체 생성
        ex) Runnable runnable = new Runnable(){
                    public void run(매개변수){..}
              }; -> 익명 구현 객체
             Runnable runnable = (매개변수)-> {..};  -> 람다식 : 런타임 시 인터페이스의 익명 구현 객체로 생성

 

- 람다식 기본 문법 : a -> System.out.println(a); ()->{실행문;}
 실행문에 return만 있을 시  (x,y)-> x+y;

 

- 람다식의 형태는 매개변수 가진 코드 블록. 자바의 메소드처럼 보임 

-> but,자바는 메소드를 클래스의 구성 멤버로 선언하기 때문 객체 만들어서 사용
  

인터페이스 변수 = 람다식;
인터페이스 변수에 대입되어 사용 -> 인터페이스의 익명 구현 객체 생성함. 
인터페이스는 직접 객체화할 수 없기 때문에 구현 클래스 필요 -> 그래서 람다식이 익명 구현 클래스 생성하고 객체화 함

 

- 타겟 타입(target type) : 대입될 인터페이스의 종류에 따라 작성 방법이 달라지기 때문에 람다식이 대입될 인터페이스를 람다식의 타겟타입이라 함



1. 함수적 인터페이스 (@Functionallterface) 

: 하나의 추상 메소드가 선언된 인터페이스만 람다식의 타겟 될 수 있음. 이런 인터페이스 부르는 말
모든 인터페이스는 람다식의 타겟 타입으로 사용할 수 없음
람다식이 하나의 메소드 정의하기 때문에 두개 이상의 추상 메소드가 선언된 인터페이스는 람다식을 이용해 구현 객체 생성 불가
- @Functionallterface : 두 개 이상의 추상 메소드 선언되지 않도록 컴파일러가 체킹해주는 기능 -> 두개 이상 시 컴파일 오류 발생



2. 매개 변수와 리턴값 없는 람다식 
ex) interface MyFunction{ public void method(); //메소드 없음}
    MyFunction fi = ()->{...} //매개 변수 없기 때문에
    fi.method(); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨



3. 매개 변수가 있는 람다식
ex)interface MyFunction{ public void method(int x); //메소드 없음}
   MyFunction fi = (x)->{...}  or x->{...}
   fi.method(5); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨



4. 리턴값 있는 람다식
ex) interface MyFunction{ public void method(int x, int y); //메소드 없음}
    MyFunction fi = (x,y)->{... return 값;} or (리턴값만 있을 시)   (x,y) -> x+y;
    fi.method(2,5); //호출 -> 이때 {...} 익명으로 처리한 실행문들 실행 됨

 

 

-<이것이 자바다2>. 한빛미디어 

'JAVA' 카테고리의 다른 글

람다식_2  (0) 2019.06.20
제네릭 예제_학생 성적 입출  (0) 2019.06.20
제네릭 예제_제네릭 클래스  (0) 2019.06.20
제네릭 예제  (0) 2019.06.20
제네릭  (0) 2019.06.20

+ Recent posts