람다

Ahri·2021년 12월 6일
0

JAVA

목록 보기
2/6

인프런의 더자바, JAVA8 강의를 들으며 정리한 내용입니다.

람다란?

  • 익명 함수
  • 파라미터, 화살표, 바디(람다의 반환값)로 이루어져 있음
(파라미터1, 파라미터2, ...) -> {반환값}
  • 쉐도잉 하지 않음.
    로컬클래스, 익명클래스는 새로 scope을 만들지만 람다는 람다를 감싸고 있는 것과 scope이 같음

로컬클래스, 익명클래스와 람다 비교

로컬클래스와 익명클래스

final int baseNumber = 10;

//로컬클래스
class LocalClass{

	  void printBaseNumber(){
               System.out.println(baseNumber); //10
           }
           
           void printBaseNumber2(){
               int baseNumber = 11;
               System.out.println(baseNumber); //11
           }
       }
 
//익명클래스 
Consumer<Integer> integerConsumer = new Consumer<Integer>() {
           Integer baseNumber = 11;
           @Override
           public void accept(Integer integer) {
               System.out.println(baseNumber);
           }
       };       

함수 안의 baseNumber 값에 영향을 받음 (scope 다르기 때문)

람다

//람다
IntConsumer printInt = (i) -> {
	System.out.println(baseNumber); //10
};

람다를 감싸고 있는 부분과 scope 이 같아서 baseNumber 사용시, 컴파일 에러가 남

0개의 댓글