2020/07/30

[筆記] Effective Java #25 source 應限制單一 top level class

Effective Java 3rd 簡體中文版筆記 #25 source 應限制單一 top level class
標題不太容易理解,其實就是不要將應該獨立編寫的 class 寫在一起。下面是書中的範例,Main 調用 UtensilDessert 兩個 class。
public class Main {
    public static void main(String[] args) {
        System.out.println(Utensil.NAME + Dessert.NAME);
    }
}
假設你的程式碼中,Utensil.java 同時定義 UtensilDessert 兩個 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.javaDessert.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

沒有留言:

張貼留言