「効果java」アイテム25|トップクラスクラスには1つのファイルしか含まれません


最高級は寒波1日のみ。


複数の上位カテゴリを宣言すると、メリットはなく、深刻なリスクのみが発生します.
1つのクラスを複数のクラスとして定義できます.どのクラスを使用するかは、まずどのソースファイルをコンパイルするかによって異なります.

トップレベルの繰り返し定義


[UtensilとDessertを参照するMainクラス]
public class Main {
    public static void main(String[] args) {
        System.out.println(Utensil.NAME + Dessert.NAME);
    }
}
次に、次の2つのファイルがそれぞれ作成されたとします.
[Utensilファイルで宣言されたUtensilクラスとDessertクラス]
public class Utensil {
    static final String NAME = "pan";
}

class Dessert {
    static final String NAME = "cake";
}
[Dessertファイルとともに宣言されたUtensilクラスとDessertクラス]
class Utensil {
    static final String NAME = "pot";
}

class Dessert {
    static final String NAME = "pie";
}
このようにクラスを繰り返し定義すると、コンパイラの動作結果が変化し、問題が発生します.
[コンパイルエラーコマンド]
javac Main.java Dessert.java // 컴파일 오류 발생
[正常動作指令]
javac Main.java Utensil.java // pancake 출력
javac Dessert.java Main.java // potpie 출력
これは、まずコンパイラにどのソースファイルを渡すかによって異なり、通常の操作やコンパイルエラーが発生する可能性があります.そのため、発生しないように、これらの問題を是正しなければならない.

トップレベルの繰り返し定義を解決する方法


トップクラスクラスを別のソースファイルに分離するだけです.
異なる上位クラスを1つのファイルに配置する必要がある場合は、静的メンバークラスの使用方法を考慮します.
[最上位クラスを静的メンバークラスに変更]
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";
    }
}

整理する


ソースファイルにトップクラス(またはトップレベルインタフェース)を作成する必要があります.