摘要: 本条的意思是,让你尽量不要在你的类中覆盖finalize方法,然后在在里面写一些释放你的类中资源的语句。 至于为什么要避免覆盖并使用finalize呢,理由如下: (1)finalize方法不能保证它能被及时的执行。 (2)finalize方法甚至都不会被执行。 (3)System.gc和Syste 阅读全文
posted @ 2017-04-11 20:57 哀&RT 阅读(435) 评论(0) 推荐(0) 编辑
摘要: 虽然当我们用完对象后,java有垃圾回收机制进行回收,但是并没有那么的智能,对于某些被引用的对象,就算我们已经不在使用它了,但是java的回收机制是不会回收他们的,人们称之为“内存泄漏”。 很多时候内存泄漏都是“人们无意识的内存引用”造成的,举个简单的例子: 看似上面的str被回收了,但是,事实上创 阅读全文
posted @ 2017-04-11 20:20 哀&RT 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 一般来说,我们最好的做法是重用对象,而不是每次使用都new出一个新的相同功能的对象,这样做很高效,特别是对于那些不可变类来说。看一个极端的反面例子,如果String s = new String("stringette");每次都被执行的话都会创建一个新的实例,然而stringette本身就是Str 阅读全文
posted @ 2017-04-11 19:47 哀&RT 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 像有些类里面可能只包含静态方法、属性和静态域的类时,而在缺少显示的构造器的时候,编译器会提供一个无参的缺省构造器,由于实例化它们并没有任何意义,所以显然没有必要,这时候我们可以提供一个私有的构造器,这样就不被实例化了,当然,我们最后在构造器中抛出异常来进行说明下,或者加条注释。 当然,有人企图通过将 阅读全文
posted @ 2017-04-11 17:09 哀&RT 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 1:采用私有构造器来强化Singleton属性 顾名思义,即我们需要定义一个private的构造器,但要注意一点,即使我们定义了私有的构造器,但是客户端还是可以借助AccessibleObject.setAccessible方法,通过反射来调用私有的构造器,因此,我们需要修改构造器来抵御这种工具,下 阅读全文
posted @ 2017-04-11 16:52 哀&RT 阅读(328) 评论(0) 推荐(0) 编辑
摘要: 由于静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数。因此我们下面要来说说构建器,所谓的构建器其实就是具有创建外部类功能的内部静态类。首先我们先理解几个模式 1.重叠构造器模式 提供一个只有必要参数的构造器,第二个构造器有一个可选参数,第三个构造器有两个可选参数,依次类推,直到 阅读全文
posted @ 2017-04-11 13:54 哀&RT 阅读(404) 评论(0) 推荐(0) 编辑
摘要: 注:本系列对Effective Java各条进行整理和简洁化,通过书籍和网上博客进行整合,主要参考http://www.jianshu.com/u/3b386b0ef996博主的系列。 首先我们先看下一个类RandomIntBuilder,用来创建随机的Int整数 接下来我们来加入几个构造器来看看 阅读全文
posted @ 2017-04-11 11:10 哀&RT 阅读(216) 评论(0) 推荐(0) 编辑