第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Lombok toBuilder() 方法是否創(chuàng)建字段的深層副本

Lombok toBuilder() 方法是否創(chuàng)建字段的深層副本

浮云間 2023-02-23 14:43:28
我toBuilder()在對(duì)象實(shí)例上使用來(lái)創(chuàng)建構(gòu)建器實(shí)例,然后使用 build 方法來(lái)創(chuàng)建新實(shí)例。原始對(duì)象有一個(gè)列表,新對(duì)象是否引用了同一個(gè)列表或它的副本?@Getter@Setter@AllArgsConstructorpublic class Library {    private List<Book> books;    @Builder(toBuilder=true)    public Library(final List<Book> books){         this.books = books;    }}Library lib2  = lib1.toBuilder().build();lib2 書(shū)籍會(huì)引用與 lib1 書(shū)籍相同的列表嗎?
查看完整描述

3 回答

?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

是的,@Builder(toBuilder=true)注解不執(zhí)行對(duì)象的深層復(fù)制,只復(fù)制字段的引用。


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


查看完整回答
反對(duì) 回復(fù) 2023-02-23
?
滄海一幻覺(jué)

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以使用一個(gè)簡(jiǎn)單的技巧手動(dòng)制作集合的副本:


    List<Book> books = new ArrayList<>();

    Library one = new Library(books);

    Library two = one.toBuilder()

        .books(new ArrayList<>(one.getBooks))

        .build();

    System.out.println(one.getBooks() == two.getBooks()); // false, different refs


查看完整回答
反對(duì) 回復(fù) 2023-02-23
?
慕神8447489

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超1個(gè)贊

實(shí)際上你可以做的是使用其他映射工具從現(xiàn)有對(duì)象創(chuàng)建一個(gè)新對(duì)象。


例如com.fasterxml.jackson.databind.ObjectMapper


    @AllArgsConstructor

    public static class Book

    {

        private String title;

    }


    @NoArgsConstructor

    @AllArgsConstructor

    @Getter

    public static class Library

    {

        private List<Book> books;

    }


    ObjectMapper objectMapper = new ObjectMapper(); //it's configurable

    objectMapper.configure( DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false );

    objectMapper.configure( SerializationFeature.FAIL_ON_EMPTY_BEANS, false );


    List<Book> books = new ArrayList<>();

    Library one = new Library( books );


    Library two = objectMapper.convertValue( one, Library.class );

    System.out.println( one.getBooks() == two.getBooks() ); // false, different refs

它可以很容易地包裝在一些實(shí)用方法中,以便在整個(gè)項(xiàng)目中使用,比如ConvertUtils.clone(rollingStones, Band.class)



查看完整回答
反對(duì) 回復(fù) 2023-02-23
  • 3 回答
  • 0 關(guān)注
  • 293 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)