effective Java
Yisnow.
这个作者很懒,什么都没留下…
展开
-
Effective Java-6:消除过期的对象引用
1、内存泄露的常见来源1.1 过期引用class MyStack { private Object[] elements; private int size=0; private static final int DEFAULT_INITAL_CAPACITY=16; public MyStack(){ elements=new Object[DEFAULT_INITAL_CAPACITY]; } public void push(Obje原创 2020-10-23 10:29:08 · 135 阅读 · 0 评论 -
《Effective Java》5、避免创建不必要的对象
一般来说,最好能重用对象而不是每次需要的时候创建一个相同功能的新对象。一些无意识创建不必要的对象的情况:String实例String s=new String("gyx");上述语句每次被执行时都创建一个新的String实例,改进后为String s="gyx";自动装箱机制Long sum = 0L;long start = System.currentTimeMillis();for (int i = 0; i< Integer.MAX_VALUE; i++) { sum原创 2020-10-22 11:22:02 · 122 阅读 · 0 评论 -
《Effective Java》4、通过私有构造器强化不可实例化的能力
有时候,你可能需要编写只包含静态方法和静态域的类作为工具类,这样的工具类不希望被实例化,实例化对它没有意义。但是在缺少显式构造器的情况下,编译器会提供一个公有的、无参的缺省构造器。错误做法:做成抽象类强制该类不可被实例化,这是行不通的,该类可以被子类化,且子类也可以被实例化。解决办法:让这个类包含私有构造器。//Noninstantiable utility classpublic class JDBCUtil { //Suppress default constructor for .原创 2020-10-22 10:39:59 · 103 阅读 · 0 评论 -
《Effective Java》2、多个构造器参数时考虑builder
1、创建对象的方式静态工厂和构造器模式:不能很好地扩展到大量的可选参数。比如用一个类表示包装食品外面显示的营养成分标签。这些标签中有几个域是必需的:每份的含量、每罐的含量以及每份的卡路里。还有超过2 0 个的可选域: 总脂肪量、饱和脂肪量、转化脂肪、胆固醇、纳,等等。大多数产品在某几个可选域中都会有非零的值。对于这样的类,应该用哪种构造器或者静态工厂来编写呢?程序员一向习惯采用重叠构造器( telescoping cons tructor )模式,在这种模式下,提供的第一个构造器只有必要的参数,第二个原创 2020-10-21 22:11:39 · 119 阅读 · 0 评论