자바/더 자바: Java 8

람다 표현식

Holy Moly 2022. 3. 26. 00:25
private void run() {

        final int num = 10;

        // 로컬 클래스
        class LocalClass{
            void printNum(){
                System.out.println(num);
            }
        }

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

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

    }

 

private void run() {
		// run() scope의 num
        int num = 10;

        // 로컬 클래스
        class LocalClass{
            void printNum(){
            	// 다른 scope이라 가르키는 num이 다름
            	int num = 11;
                System.out.println(num);
            }
        }

        // 익명 클래스
        Consumer<Integer> integerConsumer = new Consumer<Integer>() {
            @Override
            public void accept(Integer num) {
            	// 다른 scope이라 가르키는 num이 다름
                System.out.println(num);
            }
        };

        // 람다
        // 람다는 run()과 같은 scope이기 때문에 같은 이름의 변수인 num을 선언 불가
        IntConsumer printInt = (i) ->{
            System.out.println(i);
        };
			
    }