標題不太容易理解,其實就是不要將應該獨立編寫的 class 寫在一起。下面是書中的範例,Main 調用 Utensil 與 Dessert 兩個 class。
public class Main {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
}
假設你的程式碼中,Utensil.java 同時定義 Utensil 與 Dessert 兩個 class,這時 Main 會印出 pancake,如果不小心另外一個 Dessert.java 也定義兩個同樣的 class,那輸出結果就會因為載入 class 的順序不同而有不同的結果。// Two classes defined in one file. Don't ever do this!
// Utensil.java
class Utensil {
static final String NAME = "pan";
}
class Dessert {
static final String NAME = "cake";
}
// Dessert.jave
class Utensil {
static final String NAME = "pot";
}
class Dessert {
static final String NAME = "pie";
}
修正的方法很簡單,只要單獨定義 Utensil.java 及 Dessert.java,即為標題敘述的 top level class。// Static member classes instead of multiple top-level classes
public class Test {
public static void main(String[] args) {
System.out.println(Utensil.NAME + Dessert.NAME);
}
private static class Utensil {
static final String NAME = "pan";
}
private static class Dessert {
static final String NAME = "cake";
}
}
轉載請註明原文網址 https://cookieandcoketw.blogspot.com/2020/07/effective-java-25-source-top-level-class.html
沒有留言:
張貼留言