EFFECTIVE JAVA 3RD EDITION — 第九章 日常编程

Item57:Minimizethescopeoflocalvariables最小化局部变量的作用域在使用的地方声明局部变量,过早的声明会导致代码块过早开始过晚结束;让方法保持精简,集中于某一些逻辑,如果方法太大分成两个方法;使用for循环而不是使用while循环;声明局部变量时便初始化。同时偏向于

lostars 发布于 2019-01-14

EFFECTIVE JAVA 3RD EDITION — 第八章 方法

Item49:Checkparametersforvalidity检查参数合法性在方法或者是构造器的开始部分作必要的参数合法性检查,可以使用Objects.requireNonNull或者是断言,断言的一个好处是如果没有开启断言的话对代码是没有任何侵入的;前者的好处是可以自定义错误信息。同时在方法上

lostars 发布于 2018-12-19

EFFECTIVE JAVA 3RD EDITION — 第七章 LAMBDA表达式与流

Item 42 : Prefer lambdas to anonymous classes使用lambda表达式来代替匿名类Collections.sort(words, new Comparator<String>() { public int compare(String s1

lostars 发布于 2018-12-11

EFFECTIVE JAVA 3RD EDITION — 第六章 枚举与注解

Item34:Useenumsinsteadofintconstants使用枚举来代替整型常量枚举类型添加以前使用常量的方式来满足使用需要,但是这种方式有很多缺点:无法保证类型安全,并且没有没有表现力(不够优雅)。常量是跟随调用者编译的,如果常量改变了但是调用者没有重新编译那么会出现问题不利于deb

lostars 发布于 2018-11-20

JAVA三目运算中隐藏的自动拆装箱

最近修改线上bug的时候排查了一个十分隐藏的bug,直接上代码:Integera=null;booleanflag=true;Integerb=flag?a:0;乍一看是没什么毛病的,但是已运行就会发现报空指针,在idea里面也会警告可能有空指针,这是什么原因呢?直接看字节码:0:aconst_nu

lostars 发布于 2018-11-11

TOMCAT 8 COOKIEPROCESSOR 实现变化

问题Tomcat从7升级到8的时候出现了java.lang.IllegalArgumentException:Aninvaliddomain[.xxx.com]wasspecifiedforthiscookie异常。配置中有这么段配置:<ContextuseHttpOnly="tru

lostars 发布于 2018-08-24

EFFECTIVE JAVA 3RD EDITION — 第五章 泛型

Item26:Don’tuserawtypes不要使用原始类型(没有类型声明的泛型)因为编译器无法知道你的一个集合装的是什么,比如下面的代码:privateListlist=newArrayList();publicvoidaddE(Objecto){list.add(o);//gotaunchec

lostars 发布于 2018-05-02