色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

程序員如何自己new一個對象

Android編程精選 ? 來源:博客 ? 作者:Cipher ? 2021-09-22 09:37 ? 次閱讀

https://www.ciphermagic.cn/java8-builder.html

程序員經常會遇到靈魂拷問:你有對象嗎?

沒有,但我可以 new 一個!

public class GirlFriend {

private String name;

private int age;

// 省略 getter & setter 。..

public static void main(String[] args) {

GirlFriend myGirlFriend = new GirlFriend();

myGirlFriend.setName(“小美”);

myGirlFriend.setAge(18);

}

}

沒問題,老鐵!但如果對象的屬性太多,咋辦?

public class GirlFriend {

private String name;

private int age;

private int bust;

private int waist;

private int hips;

private List《String》 hobby;

private String birthday;

private String address;

private String mobile;

private String email;

private String hairColor;

private Map《String, String》 gift;

// 等等等等 。..

// 省略 getter & setter 。..

public static void main(String[] args) {

GirlFriend myGirlFriend = new GirlFriend();

myGirlFriend.setName(“小美”);

myGirlFriend.setAge(18);

myGirlFriend.setBust(33);

myGirlFriend.setWaist(23);

myGirlFriend.setHips(33);

myGirlFriend.setBirthday(“2001-10-26”);

myGirlFriend.setAddress(“上海浦東”);

myGirlFriend.setMobile(“18688888888”);

myGirlFriend.setEmail(“pretty-xiaomei@qq.com”);

myGirlFriend.setHairColor(“淺棕色帶點微卷”);

List《String》 hobby = new ArrayList《》();

hobby.add(“逛街”);

hobby.add(“購物”);

hobby.add(“買東西”);

myGirlFriend.setHobby(hobby);

Map《String, String》 gift = new HashMap《》();

gift.put(“情人節禮物”, “LBR 1912女王時代”);

gift.put(“生日禮物”, “迪奧烈焰藍金”);

gift.put(“紀念日禮物”, “阿瑪尼紅管唇釉”);

myGirlFriend.setGift(gift);

// 等等等等 。..

}

}

GirlFriend{name=‘小美’

, age=18

, bust=33

, waist=23

, hips=33

, hobby=[逛街, 購物, 買東西]

, birthday=‘2001-10-26’

, address=‘上海浦東’

, mobile=‘18688888888’

, email=‘pretty-xiaomei@qq.com’

, hairColor=‘淺棕色帶點微卷’

, gift={情人節禮物=LBR 1912女王時代, 生日禮物=迪奧烈焰藍金, 紀念日禮物=阿瑪尼紅管唇釉}

}

GirlFriend 是很美,但寫起來也太麻煩了吧。

說說缺點:實例化和設置屬性分開,不好維護;變量名重復寫。

莫慌,看法寶~

這里不再介紹其他 Builder 實現方式,直接祭出最實用的通用Builder:

適用于所有類,不需要改造原來類,不需要 lombok 插件支持。

先看看使用姿勢:

public class GirlFriend {

// 省略屬性 。..

// 省略 getter & setter 。..

// 為了演示方便,加幾個聚合方法

public void addHobby(String hobby) {

this.hobby = Optional.ofNullable(this.hobby).orElse(new ArrayList《》());

this.hobby.add(hobby);

}

public void addGift(String day, String gift) {

this.gift = Optional.ofNullable(this.gift).orElse(new HashMap《》());

this.gift.put(day, gift);

}

public void setVitalStatistics(int bust, int waist, int hips) {

this.bust = bust;

this.waist = waist;

this.hips = hips;

}

public static void main(String[] args) {

GirlFriend myGirlFriend = Builder.of(GirlFriend::new)

.with(GirlFriend::setName, “小美”)

.with(GirlFriend::setAge, 18)

.with(GirlFriend::setVitalStatistics, 33, 23, 33)

.with(GirlFriend::setBirthday, “2001-10-26”)

.with(GirlFriend::setAddress, “上海浦東”)

.with(GirlFriend::setMobile, “18688888888”)

.with(GirlFriend::setEmail, “pretty-xiaomei@qq.com”)

.with(GirlFriend::setHairColor, “淺棕色帶點微卷”)

.with(GirlFriend::addHobby, “逛街”)

.with(GirlFriend::addHobby, “購物”)

.with(GirlFriend::addHobby, “買東西”)

.with(GirlFriend::addGift, “情人節禮物”, “LBR 1912女王時代”)

.with(GirlFriend::addGift, “生日禮物”, “迪奧烈焰藍金”)

.with(GirlFriend::addGift, “紀念日禮物”, “阿瑪尼紅管唇釉”)

// 等等等等 。..

.build();

}

}

看到了嗎!實例化和屬性設置在同一條語句執行,鏈式操作,一路點點點,清爽!

Talk is cheap, show me the code:

/**

* 通用的 Builder 模式構建器

*

* @author: CipherCui

* @since 2019/8/29

*/public class Builder《T》 {

private final Supplier《T》 instantiator;

private List《Consumer《T》》 modifiers = new ArrayList《》();

public Builder(Supplier《T》 instantiator) {

this.instantiator = instantiator;

}

public static 《T》 Builder《T》 of(Supplier《T》 instantiator) {

return new Builder《》(instantiator);

}

public 《P1》 Builder《T》 with(Consumer1《T, P1》 consumer, P1 p1) {

Consumer《T》 c = instance -》 consumer.accept(instance, p1);

modifiers.add(c);

return this;

}

public 《P1, P2》 Builder《T》 with(Consumer2《T, P1, P2》 consumer, P1 p1, P2 p2) {

Consumer《T》 c = instance -》 consumer.accept(instance, p1, p2);

modifiers.add(c);

return this;

}

public 《P1, P2, P3》 Builder《T》 with(Consumer3《T, P1, P2, P3》 consumer, P1 p1, P2 p2, P3 p3) {

Consumer《T》 c = instance -》 consumer.accept(instance, p1, p2, p3);

modifiers.add(c);

return this;

}

public T build() {

T value = instantiator.get();

modifiers.forEach(modifier -》 modifier.accept(value));

modifiers.clear();

return value;

}

/**

* 1 參數 Consumer

*/

@FunctionalInterface

public interface Consumer1《T, P1》 {

void accept(T t, P1 p1);

}

/**

* 2 參數 Consumer

*/

@FunctionalInterface

public interface Consumer2《T, P1, P2》 {

void accept(T t, P1 p1, P2 p2);

}

/**

* 3 參數 Consumer

*/

@FunctionalInterface

public interface Consumer3《T, P1, P2, P3》 {

void accept(T t, P1 p1, P2 p2, P3 p3);

}

}

這個示例最多支持三個參數的設置屬性方法,也完全夠用了。如果要擴展也很容易,依葫蘆畫瓢,添加多個參數的Consumer。

責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2966

    瀏覽量

    104707
  • 代碼
    +關注

    關注

    30

    文章

    4780

    瀏覽量

    68539

原文標題:你還在 new 對象嗎?Java8 通用 Builder 了解一下?

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    TMS320C55x DSP CPU程序員參考補充

    電子發燒友網站提供《TMS320C55x DSP CPU程序員參考補充.pdf》資料免費下載
    發表于 12-21 11:36 ?0次下載
    TMS320C55x DSP CPU<b class='flag-5'>程序員</b>參考補充

    UCD3138A64/UCD3138128程序員手冊

    電子發燒友網站提供《UCD3138A64/UCD3138128程序員手冊.pdf》資料免費下載
    發表于 12-09 14:42 ?0次下載
    UCD3138A64/UCD3138128<b class='flag-5'>程序員</b>手冊

    機械革命發布CODE AI程序員

    近日,英特爾新質生產力技術生態大會在成都舉行,機械革命作為重要參展商帶來了多款明星產品引爆全場!其中更是在AI PC軟件生態產品發布分論壇上,Intel、智譜、機械革命三方聯合發布了專為程序員設計的CODE AI程序員本,成為本次大會的
    的頭像 發表于 11-30 10:34 ?375次閱讀

    Linux驅動程序程序員指南

    電子發燒友網站提供《Linux驅動程序程序員指南.pdf》資料免費下載
    發表于 11-22 15:53 ?0次下載
    Linux驅動<b class='flag-5'>程序</b><b class='flag-5'>程序員</b>指南

    AI編程工具會不會搶程序員飯碗

    AI編程工具可輔助編程,減少手動編碼,提升效率,對程序員有積極影響也有挑戰。程序員需深化技能、拓寬知識應對。長遠看,AI與人類程序員將共生共榮。
    的頭像 發表于 11-08 10:17 ?158次閱讀

    第五屆長沙·中國1024程序員節開幕

    據官方媒體報道,10月24日;? 第五屆長沙·中國1024程序員節在湖南湘江新區開幕;本次中國1024程序員節以“智能應用新生態”為主題。設置有岳麓對話、技術英雄會、主題峰會及賽事、展覽等活動,
    的頭像 發表于 10-25 15:42 ?194次閱讀

    程序員節視頻創意大賽,用串口屏贏取千元大獎

    10月24日,程序員專屬的節日里,我們盛大開啟“程序員節視頻創意大賽”特別活動!這不僅是場視覺的盛宴,更是智慧與創意的璀璨碰撞。我們誠摯邀請每
    的頭像 發表于 07-08 10:38 ?72次閱讀
    <b class='flag-5'>程序員</b>節視頻創意大賽,用串口屏贏取千元大獎

    程序員節視頻創意盛宴,邀您共襄盛舉!

    10月24日,程序員專屬的節日里,我們盛大開啟“程序員節視頻創意大賽”特別活動!這不僅是場視覺的盛宴,更是智慧與創意的璀璨碰撞。我們誠摯邀請每
    的頭像 發表于 07-04 09:00 ?67次閱讀
    <b class='flag-5'>程序員</b>節視頻創意盛宴,邀您共襄盛舉!

    助力程序員告別困擾已久的夢魘-Bug

    程序員的噩夢是什么?不用懷疑,就是讓你加班到崩潰的Bug!下面是經過業界大佬們“長期加班”積累的小妙招,助力你離早下班又進步~、定位Bug范圍及性質要有效解決問題,首先要縮小范圍,集中關注最近
    的頭像 發表于 07-02 08:10 ?316次閱讀
    助力<b class='flag-5'>程序員</b>告別困擾已久的夢魘-Bug

    大模型時代,程序員當下如何應對 AI 的挑戰

    隨著 AI 技術的飛速發展,特別是大模型的出現,傳統的程序員角色正在經歷深刻的變革,我們不得不重新對自己進行審視和思考。 通用領域大模型的“泛化能力” 在過去的二十年內,AI 領域的大部分研究
    的頭像 發表于 06-28 16:19 ?535次閱讀
    大模型時代,<b class='flag-5'>程序員</b>當下如何應對 AI 的挑戰

    適者生存,程序員最終會流向哪……

    程序員沒有永遠的護城河!!就目前的互聯網大環境來看,it行業已經是……
    的頭像 發表于 03-11 17:11 ?407次閱讀
    適者生存,<b class='flag-5'>程序員</b>最終會流向哪……

    薪資高、青春飯,是不是程序員=青樓?

    花期太短。技術迭代快,年齡大容易失業。 就這幾年的互聯網環境而言,不管是前端、Java、Android開發等等行業。已經感受到程序員不是太卷就是工作難找,薪資過低。以前高工現在拿著中低程序員薪資
    發表于 03-06 21:32

    瑞薩Flash程序員V3 發布說明

    電子發燒友網站提供《瑞薩Flash程序員V3 發布說明.pdf》資料免費下載
    發表于 02-19 09:37 ?1次下載
    瑞薩Flash<b class='flag-5'>程序員</b>V3 發布說明

    2024程序員的未來方向如何走?還看今朝

    這幾年的IT行業想必大家已經感受到了,Android、Java、前端等等程序員都經歷了大廠……
    的頭像 發表于 02-02 09:45 ?816次閱讀
    2024<b class='flag-5'>程序員</b>的未來方向如何走?還看今朝

    1月18號“純鴻蒙”千帆啟航,程序員預備!

    Android”、與互聯網大廠合作已達400+家、原生開發薪資崗位來看。鴻蒙對程序員來說無疑是條非常好的道路。 鴻蒙對程序員的影響 鴻蒙的出現,首先直接影響的是程序員。鴻蒙直接切割
    發表于 01-16 22:13
    主站蜘蛛池模板: 美女伊人网| 又黄又爽又无遮挡在线观看免费| 扒开美女嫩bbb| 爱做久久久久久| 日本bbwhd| 新影音先锋男人色资源网| 9位美女厕所撒尿11分| 欧美 另类 美腿 亚洲 无码| chinese黑人第一次| 日韩精品免费在线观看| 99视频在线观看免费| 欧美性猛交AAA片| 91精品免费久久久久久久久| 免费毛片在线播放| qvod在线电影| 色翁荡熄月月| 国产日韩欧美有码在线视频| 亚洲精品伊人久久久久| 久久精品国产亚洲精品2020| 亚洲精品国产第一区第二区| 狠狠色色综合站| 亚洲AV精品一区二区三区不卡| 国产成人高清在线观看播放| 新版孕妇bbwbbwbbw| 精品国产免费第一区二区| 在线视频a| 欧美成人性色生活18黑人| 成片免费观看视频大全| 我的家庭女教师| 国产短视频精品区| 色欲AV亚洲永久无码精品麻豆| 国产九色在线| 一区二区三区福利视频| 嫩草影院在线观看精品| 富婆夜店找黑人猛男BD在线| 袖珍人与大黑人性视频| 久久青草影院| www色小姐| 洗濯屋H纯肉动漫在线观看 | 午夜在线观看免费完整直播网 | 色欲AV人妻精品麻豆AV|