=> 지역변수가 값이 변하지 않아야(final) 참조형 변수로 사용 가능
=> 람다식 내부에서 사용되는 지역변수는 모두 final이어야 한다.
=> 보통은 final을 붙이지 않으면 컴파일러가 자동으로 붙여준다.
=> 단, 지역변수의 갑슬 변경하는 식이 있을 경우에는 자동으로 final을 붙여주지 않는다.
package kr.or.ddit.basic;
public class T03_LambdaTest {
static int stVar = 9; // 클래스 변수
private String name = "오혁"; //멤버변수
public void testMethod(final int temp) { //클래스 메서드 안에서 람다식 사용(익명개체)
final int localVar = 50; //메서드 안에 선언한 지역변수
int kor = 100; // 지역변수의 값을 변경하는 식
//temp = 500; 값이 변하지 않아야 함
//localVar = 2000; 값이 변하지 않아야 함
kor = 400; // 변경 가능
//람다식에서 지역변수 사용하기
LambdaTestInterface1 lt =
() -> {
System.out.println("temp = "+temp); // 200 -> 지역변수 final temp
System.out.println("localVar = "+localVar); // 50 -> 지역변수 final
// System.out.println("kor = "+kor); // 지역변수는 맞지만 final이 아니라서 컴파일 오류
System.out.println("stVar = "+stVar); //9 -> 클래스 변수
System.out.println("name = "+this.name); //오혁 -> 멤버변수
};
lt.test(); // 실행
}
public static void main(String[] args) {
new T03_LambdaTest().testMethod(200);
}
}