Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[question] 람다를 필드에 저장하면 정말 좋을까? #49

Open
ay-eonii opened this issue Jul 11, 2024 · 0 comments
Open

[question] 람다를 필드에 저장하면 정말 좋을까? #49

ay-eonii opened this issue Jul 11, 2024 · 0 comments
Assignees
Labels
ch9 9챕터 내용을 학습합니다 question 학습에 관한 질문입니다.

Comments

@ay-eonii
Copy link
Member

ay-eonii commented Jul 11, 2024

무엇이 어려웠나요?

람다를 필드에 저장하면 좋다는 내용이 있었습니다 (p.313)

public class CounterExampleWithLambdaField {

    private int counter = 0;

    private final Supplier<Integer> counterLambda = () -> {
        return ++counter;
    };

    public int getNextCounterValue() {
        return counterLambda.get();
    }

    public static void main(String[] args) {
        CounterExampleWithLambdaField example = new CounterExampleWithLambdaField();
        System.out.println(example.getNextCounterValue()); // 1
        System.out.println(example.getNextCounterValue()); // 2
        System.out.println(example.getNextCounterValue()); // 3
    }
}

vs

public class CounterExample {

    private int counter = 0;

    public int getNextCounterValue() {
        return ++counter;
    }

    public static void main(String[] args) {
        CounterExample example = new CounterExample();
        System.out.println(example.getNextCounterValue()); // 1
        System.out.println(example.getNextCounterValue()); // 2
        System.out.println(example.getNextCounterValue()); // 3
    }
}

전자가 좋은지 저는 잘 모르겠네요 🤔
counter를 증가시키는 예시라서 안 와닿는 것 같기도 합니다만,
행위를 상태로 가지는 객체는 잘 모르겠습니다

생각나는 예시가 있다면 알려주세요


해당 문제에 대해 본인이 알고 있는 부분을 작성해주세요.

람다를 필드에 저장했을 경우 장점

  1. 재사용성

    람다를 필드에 저장하면 여러 메서드에서 같은 람다식을 재사용할 수 있습니다. 이는 코드 중복을 줄이고 유지보수를 쉽게 합니다.

  2. 상태 유지

    람다식이 상태를 갖고 있어야 하거나, 람다식 내부에서 사용하는 변수를 필드에서 관리해야 하는 경우 유용합니다. 필드에 저장된 람다는 클래스의 상태와 연동될 수 있습니다.

  3. 캡슐화

    특정 동작을 클래스 내부로 캡슐화하여 외부에서 접근하지 못하게 할 수 있습니다. 필드에 저장된 람다는 해당 클래스 내에서만 사용되므로, 클래스 외부에서는 람다식의 구현을 알 필요가 없습니다.

@ay-eonii ay-eonii added question 학습에 관한 질문입니다. ch9 9챕터 내용을 학습합니다 labels Jul 11, 2024
@ay-eonii ay-eonii self-assigned this Jul 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
ch9 9챕터 내용을 학습합니다 question 학습에 관한 질문입니다.
Projects
None yet
Development

No branches or pull requests

1 participant