范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

高级开发要会高效Java

  高级开发起码得会些高级技巧吧?那这些高级技巧从哪里取得呢?
  第一种方式肯定是读书,什么?你没那么多时间?
  幸好,我这里忙你开启了速读模式,跟着我一起学习 《高效Java》系列。
  咱们第一站就来到了: 静态工厂方法1. 什么是静态工厂方法?静态工厂方法是一种创建对象的方式。这里的静态工厂方法,并不是设计模式中的工厂模式。静态工厂方法仅仅是类的一个普通的静态方法,它的最终效果等同于构造器。
  说了这么多,给你举个例子就明白了。Integer integer = Integer.valueOf("1"); Boolean aBoolean = Boolean.valueOf(true); Calendar calendar = Calendar.getInstance();
  上面的例子中 valueOf 和 getInstance 方法就被称为 静态工厂方法。2. 静态工厂方法优势
  那么为什么鼓励用静态工厂方法来创造对象,而不是鼓励使用构造器呢?
  原因有如下几点:静态工厂方法拥有名称,而构造器没有不必在每次调用静态工厂方法时都创建一个对象可以返回当前类的任何子类型对象减少使用者出错的概率
  下面我们来逐一了解这些优点:
  2.1 静态工厂方法拥有名称,而构造器没有
  因为构造器的本身并没有确切的描述被返回的对象,而静态工厂方法因为有方法名,所以他能够更为清楚的描述将被返回的对象。尤其是拥有多个不同参数的构造方法,在选择构造方法的时候,会让人有些迷惑,而静态工厂方法则更加清楚明了。//Date类 Date date0 = new Date(); Date date1 = new Date(2022L); Date date2 = new Date("2022"); Date date3 = new Date(2022,3,20); Date date4 = new Date(2022,3,20,18,30,59);  // LocalDate类 public static LocalDate now(){} public static LocalDate ofEpochDay(long epochDay){} public static LocalDate of(int year, Month month, int dayOfMonth) {}
  看下这么多不同参数的构造方法,如果不去了解Date,懵不懵? 再看看 Java8 中的LocalDate类。
  2.2 不必在每次调用静态工厂方法时都创建一个对象
  构造器每次调用的时候都会创建一个新的对象,而使用静态工厂方法则可以不必每次都创建新的对象,我们可以提前创建好对象或重用已有的对象,以达到提升性能的目的。
  来我给你们举个例子:
  1、Integer 类中的 valueOf 方法,当数值在 -128 ~ 127之间时,是不会创建新的Integer类的,而是从缓存中取出。public static Integer valueOf(int i) {     if (i >= IntegerCache.low && i <= IntegerCache.high)           return IntegerCache.cache[i + (-IntegerCache.low)];       return new Integer(i); }
  2、Boolean 类中的 valueOf 方法,直接取出提前创建好的静态常量返回,也没有创建新的对象。public final class Boolean{ 	public static final Boolean TRUE = new Boolean(true);     public static final Boolean FALSE = new Boolean(false);   	public static Boolean valueOf(boolean b) {         return (b ? TRUE : FALSE);     } }
  2.3 可以返回原类型的任何子类型对象
  这里牵涉到最基础的多态:向上转型:多态本身就是向上转型过的过程使用格式:父类类型 变量名=new 子类类型();
  还有就是设计模式六大原则中的<里氏替换原则>:任何使用父类的地方都能替换成子类来使用。public class Test { 	//静态工厂方法,返回Test的子类型T1     public static Test valueOf(){         return new T1();     }     private static class T1 extends Test{} }
  虽然可以这样用,但是不建议这样使用,因为这样不利于解耦,父类最好不要依赖于子类。
  推荐的做法是:像 Collections 类一样,它像一个工具类,它提供了许多静态工厂方法,你去看会发现静态工厂方法返回的并不是确定的类型,而是List接口的一些子类,这些子类被作为私有类定义在Collections 中,我们无法直接构造这些类,但却可以通过静态工厂方法使用它。
  这样做的目的是精减API的数量,对客户端来说也是一种减压。我们有时不必知道返回的类是什么,但我们可以像我们熟知的接口一样使用它。// SingletonList 是私有的,实现List接口的类 public static  List singletonList(T o) {      return new SingletonList<>(o); } // EmptyList 是私有的,实现List接口的类 public static final  List emptyList() {      return (List) EMPTY_LIST; }
  2.4 减少使用者出错的概率
  先看下例子:class Run {     public static final int RUNNING = 1;     public static final int STOP = 2;     protected int state;     public Run(int state) {         this.state = state;     }     public void process(){         // if RUNNING / STOP     } }
  上面例子中,我只想对 RUNNING / STOP 两种状态处理,但我却无法控制使用者的行为,比如他可以这样调用:new Run(4)
  这种情况怎么办呢?class Run {     public static final int RUNNING = 1;     public static final int STOP = 2;     protected int state;     //私有构造方法外部无法调用     private Run(int state) {         this.state = state;     }     public static Run running(){         return new Run(RUNNING);     }     public static Run stop(){         return new Run(STOP);     }     public void process(){         // if RUNNING / STOP     } }
  经过这样改造后,我们严格控制了取值范围,使用者出错的机会就大大减少了。3. 总结
  作为类的提供者,我们要尽量确保自身性能好,具有灵活性,让使用者使用起来更容易,更不容易出错。
  恰恰静态工厂方法可以让我们做到这些,所有建议创建对象的时候优先考虑使用静态工厂方法。
  作者:非常王不二
  链接:https://juejin.cn/post/7077750408667463717

走好人民至上赶考路走好人民至上赶考路尹卫东党的二十大报告中,人民二字出现了105次,人民至上出现了不止一次。作为基层党员干部与群众打交道最多关系最为密切,只有在工作中坚持人民至上,深入到群众中去,听11月,退休人员统一补发1800元,是真的吗?咋回事?11月,退休人员统一补发1800元,是真的吗?怎么回事?是养老金又有调整吗?11月以来,关系到今年退休人员待遇的一项重要数据养老金计发基数,已经有28省份公布了,各地也在陆续开启养算力融合趋势不可避免!联想发布91款新一代基础设施V3全系列产品过去十年,我国在高性能计算系统的研制和部署都处于世界一流,但将领先算力高效转化为解决科学与工程难题的能力依然面临挑战。而为了提升智能算力,我国在20多个城市启动了人工智能计算中心建半导体设备产业链投资梳理半导体产业链从产品类型看,半导体主要由集成电路光电子器件分立器件和传感器组成其中,集成电路的市场规模是最大的,占据80一个产业链的景气度一般是从上游开始往下游传播,所以我们应该重点1nm芯片迎来技术突破!专家公开最新技术成果芯片无疑是现在人们最熟悉的尖端科技,比如目前全球最强手机使用的芯片,就是采用4nm制程工艺制造而成的,未来两年台积电和三星,都有望发布最新的3nm或2nm芯片,芯片制程精度越来越小贝锐蒲公英智能组网深入应用工业现场设备层数据采集传输如今,随着工业互联网发展势头迅猛,数字化管理手段逐渐成为许多行业积极准备产业转型的重点方向。在工业制造领域,工业设备作为工业生产最为重要的一部分,其各种数据直接关系着产品和工厂的管新农艺绘丰收老贺的葡萄经央广网合肥11月18日消息(记者鲍玉婵通讯员杜静)立冬过后,热闹的大圩葡萄园里迎来了一年最清闲的时刻,种植户们正忙着施肥,再有半个月将迎来冬剪。今年夏天,圩区内的葡萄种植大户贺明伍十年家国十年心第八十一集丨十八洞村的山乡巨变视频加载中他是十八洞村幸福生活的见证者参与者,更是创造者。他曾经两次与习近平总书记面对面,这次,作为党的二十大代表,他代表十八洞村的老百姓,再次向习近平总书记报告。十年家国十年心走事关农村学生营养餐,七部门发文豆腐红烧鹅肉肉末红薯粉糖醋莲花白素炒青瓜黄瓜肉丝汤苹果牛奶这是贵州省铜仁市第十一小学学生陈曦在学校的午餐食谱。学校的午餐营养丰富,还非常好吃!近年来,农村义务教育学生营养改善计划深Gartner最新研究洞察中国企业的数据安全随着我国数据安全法和个人信息保护法的正式颁布施行,数据安全与隐私保护问题越来越引起国家社会以及企业的重视。数字时代到来,面临越来越多的数据,许多企业都面临着这样一个问题如何能够合规唯一登上慈善榜的山东人是谁?泰安人,济宁做出百亿企业,捐1亿文丛树来源鲁商儒风几天前发布的2022年胡润慈善榜上,有一位山东人榜上有名。他是唯一出生地在山东,或企业总部在山东的上榜者。出乎意料的是,他不是在富豪榜上名列前茅的富豪,甚至从来没
四川省第二大城市绵阳市的房价高不高?为什么?2019年绵阳房价很平稳,二手房均价在7600元至7800元之间小幅波动,与2016年初的房价相比绵阳的房价明显高了很多,当前绵阳市的人均GDP,人均可支配收入均不足于支撑现在的房喜欢榴莲,去泰国旅游几月份哪个城市比较合适?其实去泰国旅游,最好是在1到4月份,这几个季节泰国的天气是全年最凉爽的时候,室外气温多在30度左右,要是在6月份泰国的气温都40多度,真不是一般人能承受了的。去泰国旅游到处都可以买为什么上海作为全国最大的一线城市,大牌的科技公司还没深圳多?首先纠正一下,上海不是最大的一线城市,上海市总面积小于北京和广州,建成区面积也小于北京。至于为什么大牌科技公司没有深圳多,这属于关公门前耍大刀。上海虽是经济最强市,但也是经济最多元太原居住环境怎么样?全国居住环境最好的城市里面,毫无疑问应该有太原市一席,这里冬天无天寒地冻,最低温度在零下10左右,夏天最好,最热的时候不超过零上32,尤其是夜间温差大,凉快的很哪!睡个好觉是没问题上大学后发现身边的同学都很牛,要如何调节自己的自卑心态?在中学阶段,同学们学习成绩会有很大的差异。如果在班级中你的成绩特别优秀,你的心里会有非常优越的感觉,也有很骄傲的感觉,当你以这样的成绩考入大学后,在大学的班级里你就不是高高在上的优为啥我减脂减重10来天,肚子是没有了,但是体重由原来156斤,反倒变成160斤呢?健身者和普通人对身材的定义是完全不一样的。普通人会仅凭体重来判断一个人的胖瘦,而健身者会靠体脂秤上的体脂数据。我们要知道,决定一个人体重的是骨头器官水分肌肉脂肪等,如果一个人的肌肉海南哪里最适合气管炎老年人居住?下面是我的亲身体会我爸老年痴呆,老母不肯放下老爸,不肯过冬来海南。三年前冬季在老家肺心病差点息火,送重症室抢救一个星期。春节初二我从海南赶回老家。第二年老爸去逝,我带老母来海南陵水为什么蔡崇信一点蚂蚁股份都没有?有句话是大隐隐于朝,中隐隐于市,小隐隐于野。蔡崇信,当年加入阿里巴巴的时候,没有自己投资马云团队而是选择撮合孙正义投资,虽然不是十八罗汉之一,但在阿里巴巴的位置,能排号第二,甚至从月薪4500,想买一款1万2左右的摩托车,外观要好看的,有哪些可以推荐?我是骠骑府!资深摩托车媒体编辑,评论员!月薪4500,买一辆12000左右的摩托车应该不算很败家的行为,骠骑府见过几位工薪族买的还是进口大贸车型,所以,这问题不是买不买得起,而是舍艾灸是骗局吗?艾灸他肯定不是一个骗局,中医里有很多病都是用艾灸去治疗的。艾灸多数是起了一个活血化瘀的作用。说个事儿,我的一个亲戚做微商呢,卖那种小的艾灸。150块钱一盒,我在某宝和某东上,搜了一14岁乳头内陷怎么办?14岁乳头内陷怎么办14岁乳头内陷多为先天性,通常采用手法牵引负压球吸引及器械持续吸引等非手术治疗方法,也可能是乳头乳房感染外伤肿瘤等所致的继发性畸形,需要明确原因后确定治疗方法。