woowacourse / tecoble-comments

0 stars 0 forks source link

post/2020-05-18-immutable-object/ #53

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

불변객체를 만드는 방법

이번 글에서는 불변 객체로 만들어야 할 때 어떠한 방법으로 만들 수 있는지에 대해 이야기해보고자 합니다. 주로 클래스를 불변 클래스로 만드는 방법에 관해서 이야기 할 예정입니다. Immutable Object…

https://tecoble.techcourse.co.kr/post/2020-05-18-immutable-object/?utterances=d8fc9a0e78bc9eb4fbf2c70bQl1vjZ%2FPUbiz56Vy%2FBzged%2BmvG7DusvFMyXr4fo80VVSnTkdVhH8%2FQE3douKb%2FyfrpY3ti8plVzZ0h6Hjq8%2BDPOqoyJ8HcEUs%2FZzOhSy36umu%2FnI%2Bp1htIQTe0U%3D

Choi-JJunho commented 1 year ago

아래 내용의 예시에서 아래 주석과 같은 결과를 기대하기 위해서는 다음과 같은 부분을 수정해야할 것 같습니다!

public class Cars {
    private final List<Car> cars;

    public Cars(List<Car> cars) {
        this.cars = new ArrayList<>(cars);
    }

    public List<Car> getCars() {
        return cars;
    }
}

// 위와 같은 Main method 실행 결과

//[kail.study.java.study.immutable.Car@4b1210ee]  -- 서로 다른 주소값
//hodol
//kail.study.java.study.immutable.Cars@4d7e1886
//hodol -- pobi가 추가되지 않음.

반영 요청 사항

public static void main(String[] args) {
    List<Car> carNames = new ArrayList<>();
    carNames.add(new Car("hodol"));
    Cars cars = new Cars(carNames);  // hodol만 들어간 리스트를 통해 생성

    for(Car car : cars.getCars()) {
        System.out.println(car.toString()); // 결과 : 호돌
    }
    System.out.println(cars);  // 주소 kail.study.java.study.immutable.Cars@4b1210ee

    carNames.add(new Car("pobi")); //다른 값을 추가로 넣어줌.
    System.out.println(cars) // 주소 kail.study.java.study.immutable.Cars@4b1210ee

    for(Car car : cars.getCars()) {
        System.out.println(car.toString()); //결과 : 호돌 포비
    }
}

위 예시코드에서

for(Car car : cars.getCars()) {
    System.out.println(car.toString()); // 결과 : 호돌
}
System.out.println(cars);  // 주소 kail.study.java.study.immutable.Cars@4b1210ee

해당 부분에 예시가 잘못된 것 같습니다.


System.out.println(cars)

가 아닌

System.out.println(carNames)

가 되어야 올바른 예제가 될 것 같습니다...!!