자바에서 이 -> 화살표 나오는 문법을 볼 때마다 머리가 하얘져요. 람다(lambda)라고 부르는 것 같긴 한데 이게 정확히 뭘 하는 건지 감이 안 잡혀서요.
버튼 클릭 예제 같은 거 보면 예전엔 이렇게 익명 클래스로 썼잖아요.
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("clicked");
}
});
근데 요즘 코드는 그냥 이렇게 짧게 쓰던데요.
button.addActionListener(e -> System.out.println("clicked"));
이 둘이 같은 거라는데 대체 어떻게 저 긴 게 한 줄로 줄어드는 건지 이해가 안 가요. 저 e는 어디서 나온 거고 화살표 왼쪽 오른쪽은 각각 뭘 의미하는 건가요? 그리고 검색하다 보면 꼭 "함수형 인터페이스(functional interface)"라는 말이 같이 나오던데 이게 람다랑 무슨 관계인지도 모르겠어요. 아무 인터페이스나 다 람다로 쓸 수 있는 건 아닌 것 같던데 조건이 있는 건가요? 좀 정리해서 알려주시면 감사하겠습니다.