4-1. (3) Lambda (람다식) 지역변수

zhyun·2020년 9월 21일
0

HighJava

목록 보기
22/67

람다식에서 지역변수 사용시 유의할 점

=> 지역변수가 값이 변하지 않아야(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);
		
	}
}
profile
HI :)

0개의 댓글