Создает ли метод Lombok toBuilder () глубокую копию полей? - PullRequest
0 голосов
/ 28 июня 2019

Я использую toBuilder() для экземпляра объекта для создания экземпляра компоновщика, а затем метод построения для создания нового экземпляра. У исходного объекта есть список, есть ли у нового объекта ссылка на тот же список или его копия?

@Getter
@Setter
@AllArgsConstructor
public class Library {

    private List<Book> books;

    @Builder(toBuilder=true)
    public Library(final List<Book> books){
         this.books = books;
    }

}

Library lib2  = lib1.toBuilder().build();

Будут ли книги lib2 ссылаться на тот же список, что и книги lib1?

1 Ответ

1 голос
/ 28 июня 2019

Да, аннотация @Builder(toBuilder=true) не выполняет глубокое копирование объекта, а только копирует ссылку на поле.

List<Book> books = new ArrayList<>();
Library one = new Library(books);
Library two = one.toBuilder().build();
System.out.println(one.getBooks() == two.getBooks()); // true, same reference
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...