Part8 람다

람다식

람다식은 다른말로 익명 메소드라고도 한다.

  • 인터페이스 중에서 메소드를 하나만 가지고 있는 인터페이스르함수형 인터페이스라고 한다.
    • 쓰레드를 만들 때 사용하는 Runnable 인터페이스의 경우 run() 메소드를 하나만 가지고 있다.
  • Runnable을 이용하여 쓰레드를 만드는 방법
    public class LambdaExam1 {

        public static void main(String[] args) {
            new Thread(new Runnable(){public void run(){
                for(int i = 0; i < 10; i++){
                    System.out.println("hello");
                }
            }}).start();
        }   
    }
  • 쓰레드가 실행되면 쓰레드 생성자 안에 넣은 run()메소드가 실행된다.
  • 자바는 메소드만 배개변수로 전달할 방법이 없다. 인스턴스만 전달할 수 있다.
  • 그렇기 때문에 run()메소드를 가지고 있는 Runnable 객체를 만들어서 전달한다.

메소드만 전달할 수 있다면, 좀 더 편리하게 프로그래밍할 수 있을텐데, 자바는 메소드만 전달할 수 있는 방법은 없었기 때문에 매번 객체를 생성해서 매개변수로 전달해야 했다. 이러한 부분을 해결한 것이 람다 표현식이다.

  • 람다식을 이용해서 수정한 코드
    public class LambdaExam1 {  
        public static void main(String[] args) {
            new Thread(()->{
                for(int i = 0; i < 10; i++){
                    System.out.println("hello");
                }
            }).start();
        }   
    }
  • ()->{……} 부분이 람다식, 다른말로 익명 메소드
  • JVM은 Thread생성자를 보고 ()->{} 이 무엇인지 대상을 추론한다.
  • Thread 생성자 api를 보면 Runnable 인터페이스를 받아들이는 것을 알 수 있다.
  • JVM은 Thread 생성자가 Runnable 인터페이스를 구현한 것이 와야 하는 것을 알게 되고 람다식을 Runnable을 구현하는 객체로 자동으로 만들어서 매개변수로 넣어준다.



프로그래머스 자바 중급을 마무리하며

자바 초급 강의보다는 조금 덜 직관적으로 와닿은 강의였다. 자바 중급 강의에서 배우는 다양한 패키지와 IO 그리고 쓰레드와 람다를 정확히 어느 경우에 사용 하는지 모호하기 때문인 것 같다. 이러한 부분들은 향후 java 언어를 자주 사용하게 됨으로써 해당 기능들을 사용하게 되었을 때 더 직관적으로 이해할 수 있을 것 같다. 해당 기능들을 사용할 때 이해가 되지 않는다면, 이번에 포스팅한 프로그래머스 자바 중급 강의를 사용하면 좋을 것 같다.


해당 강의와 강의 노트는 프로그래머스 자바 중급에서 언제든지 다시 들을 수 있다!

댓글남기기