인프런의 더자바, JAVA8 강의를 들으며 정리한 내용입니다.
(파라미터1, 파라미터2, ...) -> {반환값}
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 사용시, 컴파일 에러가 남