首页 > TAG信息列表 > effective-java

java – Builder Pattern:首选哪个变体?

我正在阅读Effective Java书籍,并为我将来的参考创建笔记, 我遇到了Builder Pattern. 好吧,我明白它是什么以及如何使用它.在这个过程中,我创建了两个构建器模式的示例变体. 我需要帮助列出每个人的差异和优势吗?我当然注意到,示例1公开了较少的方法,其中限制较少,而且更通用的,允许

java – 具有两个相同类型元素的异构容器

我正在阅读Effective Java – Item 29.它讨论了异构容器,在这个例子中: private Map<Class<?>, Object> favorites = new HashMap<Class<?>, Object>(); public <T> void putFavirite(Class<T> type, T insance) { if(type == null) { throw

在java中实现hashcode()

在编写一个用Effective java编写的好hashCode()的指南中,如果字段很长,作者会提到以下步骤. If the field is a long, compute (int) (f ^ (f >>> 32)). 我无法理解为什么这样做.我们为什么这样做 ?解决方法:在Java中,long是64位,int是32位. 所以这只是取高32位,并用低32位对它们

如何使用单个构建器来构建多个对象?

这个直接来自Effective java 2.我不确定第2项中的这个陈述是什么意思 The Builder pattern is flexible. A single builder can be used to build multiple objects. The parameters of the builder can be tweaked between object creations to vary the objects. 我无法

为什么Joshua Bloch在有效的java中减少pop方法中堆栈的“大小”值?

这是Joshua Bloch撰写的第6章第24页的有效Java第2版第2章的代码. 在他定义的pop方法中,他使用元素[ – size].我想知道他为什么使用–size,而元素[size–]应该返回相同的正确值? public class Stack { private Object[] elements; private int size = 0; pri

如果我覆盖Java中的’equals’方法,为什么需要重写hashcode?

我知道只要在Java中重写equals方法,就需要覆盖hashcode.那只是一份合同.我试图理解这背后的逻辑.我在Joshua Bloch年阅读了* Effective Java,我遇到了这段代码(第9项,第45页): import java.util.HashMap; import java.util.Map; public final class PhoneNumber { private fin

Java:为什么不将clone()用于防御性复制?

在Effective Java(第7章)中,它说 Note also that we did not use Date’s clone method to make the defensive copies. Because Date is nonfinal, the clone method is not guaranteed to return an object whose class is java.util.Date: it could return an instance of an