纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

高级开发要会高效Java

7月11日 碎骨族投稿
  高级开发起码得会些高级技巧吧?那这些高级技巧从哪里取得呢?
  第一种方式肯定是读书,什么?你没那么多时间?
  幸好,我这里忙你开启了速读模式,跟着我一起学习《高效Java》系列。
  咱们第一站就来到了:静态工厂方法1。什么是静态工厂方法?静态工厂方法是一种创建对象的方式。这里的静态工厂方法,并不是设计模式中的工厂模式。静态工厂方法仅仅是类的一个普通的静态方法,它的最终效果等同于构造器。
  说了这么多,给你举个例子就明白了。IntegerintegerInteger。valueOf(1);BooleanaBooleanBoolean。valueOf(true);CalendarcalendarCalendar。getInstance();
  上面的例子中valueOf和getInstance方法就被称为静态工厂方法。2。静态工厂方法优势
  那么为什么鼓励用静态工厂方法来创造对象,而不是鼓励使用构造器呢?
  原因有如下几点:静态工厂方法拥有名称,而构造器没有不必在每次调用静态工厂方法时都创建一个对象可以返回当前类的任何子类型对象减少使用者出错的概率
  下面我们来逐一了解这些优点:
  2。1静态工厂方法拥有名称,而构造器没有
  因为构造器的本身并没有确切的描述被返回的对象,而静态工厂方法因为有方法名,所以他能够更为清楚的描述将被返回的对象。尤其是拥有多个不同参数的构造方法,在选择构造方法的时候,会让人有些迷惑,而静态工厂方法则更加清楚明了。Date类Datedate0newDate();Datedate1newDate(2022L);Datedate2newDate(2022);Datedate3newDate(2022,3,20);Datedate4newDate(2022,3,20,18,30,59);LocalDate类publicstaticLocalDatenow(){}publicstaticLocalDateofEpochDay(longepochDay){}publicstaticLocalDateof(intyear,Monthmonth,intdayOfMonth){}
  看下这么多不同参数的构造方法,如果不去了解Date,懵不懵?再看看Java8中的LocalDate类。
  2。2不必在每次调用静态工厂方法时都创建一个对象
  构造器每次调用的时候都会创建一个新的对象,而使用静态工厂方法则可以不必每次都创建新的对象,我们可以提前创建好对象或重用已有的对象,以达到提升性能的目的。
  来我给你们举个例子:
  1、Integer类中的valueOf方法,当数值在128127之间时,是不会创建新的Integer类的,而是从缓存中取出。publicstaticIntegervalueOf(inti){if(iIntegerCache。lowiIntegerCache。high)returnIntegerCache。cache〔i(IntegerCache。low)〕;returnnewInteger(i);}
  2、Boolean类中的valueOf方法,直接取出提前创建好的静态常量返回,也没有创建新的对象。publicfinalclassBoolean{publicstaticfinalBooleanTRUEnewBoolean(true);publicstaticfinalBooleanFALSEnewBoolean(false);publicstaticBooleanvalueOf(booleanb){return(b?TRUE:FALSE);}}
  2。3可以返回原类型的任何子类型对象
  这里牵涉到最基础的多态:向上转型:多态本身就是向上转型过的过程使用格式:父类类型变量名new子类类型();
  还有就是设计模式六大原则中的里氏替换原则:任何使用父类的地方都能替换成子类来使用。publicclassTest{静态工厂方法,返回Test的子类型T1publicstaticTestvalueOf(){returnnewT1();}privatestaticclassT1extendsTest{}}
  虽然可以这样用,但是不建议这样使用,因为这样不利于解耦,父类最好不要依赖于子类。
  推荐的做法是:像Collections类一样,它像一个工具类,它提供了许多静态工厂方法,你去看会发现静态工厂方法返回的并不是确定的类型,而是List接口的一些子类,这些子类被作为私有类定义在Collections中,我们无法直接构造这些类,但却可以通过静态工厂方法使用它。
  这样做的目的是精减API的数量,对客户端来说也是一种减压。我们有时不必知道返回的类是什么,但我们可以像我们熟知的接口一样使用它。SingletonList是私有的,实现List接口的类publicstaticTListTsingletonList(To){returnnewSingletonList(o);}EmptyList是私有的,实现List接口的类publicstaticfinalTListTemptyList(){return(ListT)EMPTYLIST;}
  2。4减少使用者出错的概率
  先看下例子:classRun{publicstaticfinalintRUNNING1;publicstaticfinalintSTOP2;publicRun(intstate){this。}publicvoidprocess(){ifRUNNINGSTOP}}
  上面例子中,我只想对RUNNINGSTOP两种状态处理,但我却无法控制使用者的行为,比如他可以这样调用:newRun(4)
  这种情况怎么办呢?classRun{publicstaticfinalintRUNNING1;publicstaticfinalintSTOP2;私有构造方法外部无法调用privateRun(intstate){this。}publicstaticRunrunning(){returnnewRun(RUNNING);}publicstaticRunstop(){returnnewRun(STOP);}publicvoidprocess(){ifRUNNINGSTOP}}
  经过这样改造后,我们严格控制了取值范围,使用者出错的机会就大大减少了。3。总结
  作为类的提供者,我们要尽量确保自身性能好,具有灵活性,让使用者使用起来更容易,更不容易出错。
  恰恰静态工厂方法可以让我们做到这些,所有建议创建对象的时候优先考虑使用静态工厂方法。
  作者:非常王不二
  链接:https:juejin。cnpost7077750408667463717
投诉 评论 转载

微信隐藏了一个拍照开关,打开后,照片清晰又美观朋友们大家好,那今天小俊要给大家分享的知识呢,就是如何使用微信拍照的时候啊,拍出更加清晰美观的照片!我们在使用微信聊天的时候呢,常常会给好友拍摄发送一些照片,比如说我们看到好看……国足征召5名超龄国脚将征战东亚杯亚泰谭龙入围新一届东亚足球锦标赛(俗称东亚四强赛)将于7月19日至27日在日本举行。按照计划,即将出征东亚杯赛的混编中国队阵容将以1999年龄段球员为主,配以部分超龄球员,球队计划将于7月……高级开发要会高效Java高级开发起码得会些高级技巧吧?那这些高级技巧从哪里取得呢?第一种方式肯定是读书,什么?你没那么多时间?幸好,我这里忙你开启了速读模式,跟着我一起学习《高效Java》……盘点NBA各项单场数据之最,现役仅一人!单场得分记录1962年3月2日,在勇士对阵尼克斯的比赛中,威尔特张伯伦63投36中,罚球32罚28中得到满分100分!这也是NBA至今最高的单场得分记录!要知道在比赛开始……连续5年上榜!安图蝉联中国最美县域榜单2022中国最美县域榜单于2022年12月27日在第十八届中国(深圳)国际文化产业博览交易会上发布,安图作为老字号旅游强县,已连续五年榜上有名。据介绍,中国最美县域榜单以……经常犯困嗜睡的人是怎么回事?中医多半和这3种原因有关有句俗话说,春困夏乏秋打盹,但是如果我们一年365天,白天还总是想睡觉,昏昏欲睡,头脑不清醒,总是健忘,丢三落四,反应迟钝,有这些问题的话,可能就是一种病了,在中医上叫做多寐,……每个中国家庭必备的十味中药最好的医生,就是我们自己,因为没人比我们更了解自己的身体中医药是中国的瑰宝,经验丰富的老中医,可以用它们来医治疾病,我们更可以将其用在食疗之中,调养自己的身体下面为……彩票销售站点能否享受直播红利?最近,新东方火了。在去年双减政策发布后,作为课外教育巨头不可避免地迎来了寒冬。但在转战直播领域后,老本行双语直播再次翻红。股价上涨,粉丝暴增,主播董宇辉也屡屡登上热搜。不……建议子女若是不差钱,多给父母吃6样好菜,营养还好吃现在的老人很多都有退休金,不缺钱,但是不舍得为自己花钱,为儿女子孙花钱一点都不含糊,但是提到为自己买的好东西就心疼。儿女大了,若是不差钱的话,一定要多给父母吃6样好菜,这些菜品……女篮世界杯下周揭幕,首战对阵韩国队主教练郑薇放低身段,立足于2022年国际篮联女篮世界杯将于9月22日在悉尼揭幕,中国女篮将在揭幕当天对阵韩国队。9月12日,分两批前往悉尼的女篮队员顺利会合,随即投入冲刺阶段的备战。接下来中国队将与澳大……酒泉,比青海多彩,景色不输西藏,霸屏千年,却低调得令人心疼它是前往太空的起点也是超越最幸福国度斯里兰卡被评为亚洲最佳旅行地Top1在这里,你能看到大漠孤烟直,长河落日圆的绝美景色在这里,你能看到罕见……在压力的作用下,有些流体为何流的更慢了?图片来源:pixabay对于大多数流体来说,增加压力会使流速增加,就像从管子里挤出番茄酱一样。但是在流经土壤或沉积岩等多孔材料时,一些流体的流速则在压力的作用下反而变慢了……
CP粉售后来临,吴露可逃共同出席活动,两人同框笑得好甜孩子春天长高吃什么?太阳系串门指南手把手教你在地球环游宇宙斩获年度潜力产品大奖新母婴消费时代倍恩喜脱颖而出海天酱油中外双标背后是酱油标准起草人,市值蒸发超3000亿女排世锦赛E组荷兰队无缘八强中国女排暂居第四天齐锂业副董事长蒋安琪率队远赴南美寻求更多合作机会微软良心?允许不是最新的硬件也能装windows11?历城区一线挂职为数字经济发展注入青春动能为什么说苹果一小步,安卓一大步?看到最后才会弄明白王俊凯少年春风得意,青年转型不顺,成也颜值,败也颜值交手3胜7负!英锦赛再度会师!奥沙利文老迈或难挡凯伦威尔逊

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形