8得票3回答
Java有效编程第1条:适用于TDD和依赖注入

我一直在阅读《Effective Java》,对于第一项“使用静态工厂方法代替构造函数”与TDD和依赖注入有些疑虑。 这一项说你应该避免使用公共/受保护/默认构造函数,并使用静态工厂暴露它。我同意使用静态工厂相关的所有优点,例如工厂可以有名称,您可以返回子类型,您可以减少冗余等。但是,我认为...

7得票1回答
乔书记的《Effective Java》中的Equals方法

请查看 Joshua Bloch 的《Effective Java》的链接。在第二段中,作者说: The class is private or package-private, and you are certain that its equals method will never b...

7得票3回答
将生成器模式应用于方法调用

这是对Effective Java第二版中ITEM 40: Design Method Signatures Carefully的部分内容的理解尝试。 其中建议之一是通过控制参数数量来提高方法签名的可读性,建议将参数列表控制在四个或更少。如果有较长的参数列表,则可以使用多种技术进行管理,其中...

7得票2回答
构建者模式:哪个变体更受青睐?

我正在阅读《Effective Java》这本书,为了将来的参考而做笔记时,我遇到了建造者模式。 我明白它是什么,以及它应该如何使用。在这个过程中,我创建了两个建造者模式的示例变体。 我需要帮助列出它们之间的区别和优点。很明显,示例1暴露出更少的方法,因此它更加通用和灵活,从而允许更加灵活...

7得票2回答
转发类示例

阅读Effective Java,我看到了来自Item 16:优先使用组合而非继承的以下示例。 在下面的InstrumentedSet中,书中展示了我们可以通过InstrumentedSet.addCount变量跟踪插入元素的次数。 为此,我们可以简单地附加到该类对象的addCount,然...

7得票2回答
类管理自己的内存

《Effective Java》:第6条:消除过期的对象引用。 通常情况下,每当一个类管理自己的内存时,程序员都应该警惕内存泄漏。当一个元素被释放时,其中包含的任何对象引用都应该被置为null。 我认为我没有完全理解这个描述。 有哪些类管理自己的内存的例子 - 我可以想到数组、列表,也许...

7得票3回答
为什么抑制这个未经检查的警告是安全的?

考虑《Effective Java》泛型章节中定义的UnaryFunction接口。 public interface UnaryFunction<T> { T apply(T arg); } 以下是返回UnaryFunction的代码: // Generic single...

7得票1回答
规范化字段形式

我正在学习《Effective Java》的第8项(遵守重写equals方法的通用约定)。作者已经解释得很清楚了,但仍有一些部分没有详细说明。 对于这个例子,他考虑了一个名为CaseInsensitiveString的类: public final class CaseInsensitiv...