반응형
책에 나와있는 예제에서 최대한 기본에 가깝게 수정해서, 다시 올려봤습니다.
설명을 자세히 해봤는데, 많은 분이 람다식의 흐름을 더 잘 이해할 수 있기를 바라면서 글을 마치겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | package thisisjava; public class Button { /* * 인터페이스로 람다식을 구현하는 경우 추상메소드가 1개만 있어야 합니다. 그것을 보조해주는 어노테이션이 바로 아래와 같습니다. */ @FunctionalInterface public static interface ClickListener { void onClick(); // 람다식을 통해 구현할 추상메소드 입니다. } private ClickListener clickListener; // Button 객체를 만들고, 그 안에 있는 필드를 통해 람다식과 연결해주려 합니다. 계속해서 아래를 보시면서 확인해가겠습니다. // 이 메소드의 매개변수는 ClickListener 인터페이스를 구현한 객체. 즉 다시말해서 람다식을 받아줍니다. // 역할은 Button 객체의 필드 clickListener와 위에서 말한 람다식을 연결해줍니다. public void setClickListener(ClickListener clickListener) { this.clickListener = clickListener; }; // 이 Button 객체의 필드로 선언한 람다식. 그것의 onClick 메소드를 호출하는 메소드입니다. // 조금 이해가 어렵더라도 이 부분. 잘 이해해야 합니다. public void click() { this.clickListener.onClick(); } // 여기서 흐름을 자세히 보셔야 합니다. // 계속 반복해서 흐름을 봐주세요 public static void main(String[] args) { // Button 객체 생성 Button btnOk = new Button(); btnOk.setClickListener(() -> { System.out.println("Ok 버튼을 클릭했습니다."); }); // Button 객체의 setClickListener 메소드를 호출합니다. // setClickListener 메소드의 매개변수로 ClickListener 인터페이스를 구현한 람다식을 이 코드에서 바로 정의해줍니다. // 즉, 여기서 람다식은 ClickListener 인터페이스를 구현한 객체(익명구현객체) 입니다. // 인터페이스의 추상 메소드를 @override 하였으나, 구현하려는 추상메소드가 매개변수가 없기에 람다식 또한 매개변수가 없는 형태로 구현하였습니다. // 형태는 실행부가 1개의 코드이면 {} 생략. 2개 이상이면 {} 필요합니다만, 기본적으로 {}를 해주는 것이 가독성이 좋다고 생각합니다. // 역할은 위에서 설명했듯이 Button 객체의 필드 clickListener와 함수형 인터페이스를 람다식으로 구현하면서, 바로 연결해줍니다. btnOk.click(); //이 메소드의 역할 역시 위에서 설명한대로 //Button 객체의 필드로 선언한, 람다식(익명구현객체)의 onClick 메소드를 호출하는 것이며, 그에 따라 람다식에서는 실행부를 바로 호출합니다. } } | cs |
반응형
'Study > 이것이 자바다(개정판)' 카테고리의 다른 글
| 매개변수가 있는 람다식 작성 요령 요약 (0) | 2023.12.11 |
|---|---|
| 람다식이란?? 그리고 함수형프로그래밍?? (2) | 2023.12.06 |
| (10.02 수정)제네릭이란? (0) | 2023.06.28 |
| 싱글톤 패턴 간단개념 (0) | 2023.04.03 |
| main() 메소드의 String[] 매개변수 용도 및 활용 (0) | 2023.03.04 |