![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Effective Java
文章平均质量分 56
「已注销」
这个作者很懒,什么都没留下…
展开
-
07-避免使用终结方法
本条目大意尽量避免在类中使用终结(finalize)方法,在里面写一些释放类中资源的语句。为什么要避免使用 finalize方法?1、java语言规范不仅不保证 finalize方法会被及时地执行,而且根本不保证他们会被执行。 2、System.gc 和 System.runFinalization 这两个方法只是增加了finalizer 方法被执行的机会。 3、唯一能保证 finalize 方翻译 2017-02-16 15:02:06 · 533 阅读 · 0 评论 -
08-重写 equals 时请遵守通用约定
重写 equals 方法有许多的重写方式会导致错误,所以要么不重写 equals 方法,要么重写时就要尽力遵守通用约定。一、可以不重写equals方法的情况如果不重写equals方法,那该类的每个实例都只与它自身相等,而有时候这就是我们需要的。1、类的每个实例本质上都是唯一的 对于代表活动实体(例如 Thread),而不是值(Value)的类来说确实如此,Object提供的equals实现对于这些翻译 2017-02-17 16:22:06 · 399 阅读 · 0 评论 -
04-通过私有构造器强化不可实例化的能力
有时候需要编写只包含静态方法和静态域的类,其一般作为工具类使用,这样的类不需要被实例化。然而在缺少显式构造器的情况下,编译器会自动提供一个公有的、无参的缺省构造器(dafault constructor),所以常常可以看到一些被无意识地实例化的类。这就需要强化此类不可实例化的能力,由于只有当类不包含显式的构造器时,编译器才会生成缺省的构造器,因此我们只需要将这个类包含私有构造器,它就不能被实例化了,翻译 2017-02-14 20:34:10 · 666 阅读 · 0 评论 -
03-用私有构造器或者枚举类型强化 Singleton 属性
目录方法一:公有静态成员,并且是 final 域方法二:公有的成员是个静态工厂方法上述两种方法都存在的问题序列化预防“假冒”方法三:单元素的枚举类型1. 公有静态成员,并且是 final 域public class Student { public static final Student INSTANCE = new Student(); // 私有构造器 priv翻译 2017-01-24 20:51:20 · 531 阅读 · 0 评论 -
02-遇到多个构造器参数时要考虑用构建器
目录简介重叠构造器JavaBeans 模式Builder 模式Builder 模式在 Android 的应用简介构造器和静态工厂有一定的局限性,当我们创建实例,遇到大量的参数,有的参数需要传值,有的参数不需要选择等等灵活的条件下,我们应该怎么办?重叠构造器:简单粗暴,提供好多好多个构造函数来满足需要。JavaBeans 模式:实际上是先调用无参的构造函数来创建对象,然后再调用属性的 s翻译 2017-01-23 20:54:44 · 1046 阅读 · 0 评论 -
01-考虑用静态工厂方法代替构造器
本文目录简介优势缺点服务提供者框架简介如果想要获取一个类的实例,最常用的方法就是提供一个公有的构造器,除此之外,类还可以提供一个公有的静态工厂方法,它是一个返回类的实例的静态方法。下面是Java中自带的Boolean类(基本类型boolean的包装类)中的静态工厂方法,这个方法将基本类型boolean值转换成一个Boolean对象引用: public static Boolean valu翻译 2017-01-15 18:22:54 · 362 阅读 · 0 评论 -
05-避免创建不必要的对象
本节书中从避免创建不必要的对象出发,提到了大概五个方面,如下:1、 String str1=new String("hello");每次执行都会创建String实例。 改进后 String str2="hello";所有在同一台虚拟机中运行的代码,只要它们包含相同的字符串字面常量,该对象就会被重用,而不是创建新的对象。2、 运行:Integer integer1 = Integer.valu翻译 2017-02-15 14:07:46 · 466 阅读 · 0 评论 -
06-消除过期的对象引用
java 虽然有垃圾回收机制,但是对于被引用的对象,就算我们已经不再使用,它的回收机制可能也不会进行回收,称之为内存泄漏。书中有这样一个例子,先看代码:public class Stack { public Object[] elements;//原文是private,便于测试改成public private int size = 0; private static final翻译 2017-02-15 22:15:22 · 393 阅读 · 0 评论