我知道如果你讓 for (condition) {
String s = "hi there";
}
只是一個String實例在所有的迭代創建的,不像String s = new String("hi there");,將創建在每個迭代一個新的實例。 但是,從約書亞布洛赫閱讀有效的Java:第2章第5項(第20頁),它規定: 此外,還保證了對象將 在同一運行的任何其他代碼重用發生的
項目23(不要使用新代碼的原始類型)有效的Java中聲稱,在Java代碼中使用原始類型總是危險 例如,它聲稱,下面的方法是危險和不安全 // Use of raw type for unknown element type - don't do this!
static int numElementsInCommon(Set s1, Set s2) {
int result = 0;
public class Person
private final Date birthDate;
// others fields omitted
public boolean isBabyBoomer() {
Calendar gmtCal =
Calendar.getInstance(TimeZone.getTimeZone("GMT"));
gmtCal.set(1946,Ca
我正在學習有效的Java,第8條(在覆蓋等於時服從一般合同)。作者已經很清楚地解釋了這一點,但仍然有些部分沒有詳細闡述。 對於這個例子,他認爲定義爲類CaseInsensitiveString: public final class CaseInsensitiveString {
private final String s;
public CaseInsensitiveSt
我最近閱讀了Effective Java,發現Builder Pattern(item#2)非常有趣。 不過,我有一個問題:我們爲什麼要建立一個靜態的建設者,當我們能做到這一點: // JavaBeans Pattern
public class NutritionFacts {
private int servingSize;
private int servings;
private
在Bloch的Effective Java中,第2版,項目11:覆蓋克隆明智有下面的例子: class Stack {
private Object[] elements;
private int size = 0;
private static final int DEFAULT_INITIAL_CAPACITY = 16;
public Stack()