반응형
로컬 변수 사용
람다식은 메소드 내부에서 주로 작성되기 때문에 로컬 익명 구현 객체를 생성시킨다고 봐야한다.
람다식에서 바깥 클래스의 필드나 메소드는 제한 없이 사용할 수 있으나 메소드의 매게변수 또는 로컬 변수를 사용하면 이 두 변수는 final 특성을 가져야 한다. 따라서 매게 변수 또는 로컬 변수를 람다식에서 읽는 것은 허용되지만, 람다식 내부 또는 외부에서 변경할 수 없다.
public class UsingLocalVariable{
void method(int args) { // arg는 final 특성을 가짐
int localVar = 40; //localVar는 final 특성을 가짐
//arg =31; //final 특성때문에 변경불가
//localVar = 31; // final 특성떄문에 수정불가
//람다식
MyFunctionalInterface fi = () -> {
System.out.println("arg:" + arg);
System.out.println("localVar:" + localVar+ "\n");
};
fi.method();
}
}
람다식안에서 로컬변수들이 사용되면 final 특성을 갖는다 혹시나 fianl을 적지않아서 아닐거라고 생각하시는 분들이 있을텐데
묵시적으로 final특성을 갖게끔 컴파일러가 해석 하게 된다 그렇기 때문에 arg lovalVar를 수정하려고 한다면 수정이 안된다.
만약 수정을 시도 하더라도 컴파일이 안될것이다.
반응형
'JAVA' 카테고리의 다른 글
상속(InherItance) (0) | 2020.11.09 |
---|---|
OOP (0) | 2020.11.09 |
람다식(2) (0) | 2020.11.01 |
람다식이란? (0) | 2020.11.01 |
DAO, DTO, VO (0) | 2020.11.01 |