Open utterances-bot opened 2 years 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)
가 되어야 올바른 예제가 될 것 같습니다...!!
불변객체를 만드는 방법
이번 글에서는 불변 객체로 만들어야 할 때 어떠한 방법으로 만들 수 있는지에 대해 이야기해보고자 합니다. 주로 클래스를 불변 클래스로 만드는 방법에 관해서 이야기 할 예정입니다. 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