深圳自适应网站开发多少钱,网络公司网站首页图片,做语文题的网站,西安网站建设优化服务公司java创建和销毁一个对象创建和销毁对象#xff08;第2章#xff09; 这是Joshua Blochs的《 有效的Java》第2章的简短摘要。我仅包括与自己相关的项目。 静态工厂#xff08;项目1#xff09; 静态工厂与构造函数的一些优点#xff1a; 工厂方法的名称为构造函数添加了描… java创建和销毁一个对象 创建和销毁对象第2章 这是Joshua Blochs的《 有效的Java》第2章的简短摘要。我仅包括与自己相关的项目。 静态工厂项目1 静态工厂与构造函数的一些优点 工厂方法的名称为构造函数添加了描述 他们可以返回预先构造的对象而不必总是返回new。 他们可以返回声明的返回类型的任何子类型甚至是非公共类。 仅使用静态工厂例如使用私有构造函数的主要缺点是无法对该类进行子类化。 用构造器代替具有许多参数的构造器项目2 调用具有许多参数的构造函数可能很麻烦因为它需要查看方法声明以了解参数表示什么。 这使得读取和调用这样的构造函数都很困难。 一种替代方法是使用无参数构造函数构造一个对象然后使用setter设置所需的字段JavaBean模式。 这种方法的缺点是在设置不变式时对象可能处于不一致状态。 此外由于您提供的是setter因此对象是不可变的因此线程安全性很困难。 建筑商是第二种选择两全其美。 生成器首先以可读和紧凑的方式“收集”参数然后通过首先验证不变量是正确的来实例化对象。 由于建造者对于小班制可能会显得过大因此本书建议将其用于具有四个以上参数的班级。 请注意对于构造函数和静态工厂构造器都是替代方法。 与Singelton的一些陷阱项目3 如果singelton未实现接口则Singeltons使其难以测试其客户端因为您无法模拟出singelton。 如果将singeltons设置为可序列化的 则它们不再是singeltons除非在反序列化时特别注意。 实现单例的最佳方法是使用单元素枚举类型这避免了序列化的问题。 避免创建不必要的对象项目5 创建对象时应小心。 重复使用昂贵的物品但不要以防御性复制为代价出于不变性–项目39。 应优先于盒装基元使用基元并且在执行自动装箱以删除不必要的对象创建时要格外小心。 消除过时的对象引用项目6 这些书显示了一个堆栈示例其中弹出项目不会从内部数组中清空从而使它们成为无法被垃圾回收的过时引用。 内存泄漏和过时引用的公共来源 每当类管理自己的内存时 程序员都应该对内存泄漏发出警报。 忘记缓存条目。 考虑将WeakHashMap用于缓存该缓存仅在条目的外部引用时才保存项目。 缺少注销的监听器和回调 。 同样在这里可以使用WeakHashMap 。 翻译自: https://www.javacodegeeks.com/2017/05/effective-java-creating-destroying-objects.htmljava创建和销毁一个对象