「効果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";
}
}
整理する
ソースファイルにトップクラス(またはトップレベルインタフェース)を作成する必要があります.
Reference
この問題について(「効果java」アイテム25|トップクラスクラスには1つのファイルしか含まれません), 我々は、より多くの情報をここで見つけました https://velog.io/@alkwen0996/이펙티브-자바-아이템25-톱레벨-클래스는-한-파일에-하나만-담으라テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol