Javaでは、列挙定数のコンストラクタはいつ呼び出されますか?
私は次のテスト/ドライバコードを持っています:public static void main(String args[]){
System.out.println(Commands.Save.getShortCut());
}
質問: Javaの場合、コンストラクタはいつですか?列挙定数は呼び出されましたか?上記の例では、
Save
の列挙定数のみを使用しています。これは、コンストラクタが
Save
のみを作成するために一度呼び出されることを意味しますか?あるいは、
Save
と
File
の両方が一緒に構築されますか?
'ClassLoader'がクラスをロードすると、enumのコンストラクタが呼び出されますか? SaveやFileのようなアクセスしているメンバがコンストラクタを呼び出しますか?引数のコンストラクタがないとどうなりますか? –
@MuhammadBabarクラスを初期化せずにロードすることができます。したがって、いいえ、クラスが初期化されると、各メンバーが構築されることを意味します。そして、私が言ったように、メンバーが参照されているかどうかは問題ではありません。クラスの初期化時に構築されます。あなたの2番目の質問は明確ではありません。メンバーに引数が指定されていない場合は、引数なしのコンストラクタが定義されている必要があります。そうでない場合は、enumはコンパイルされません。それはあなたが意味することですか? – erickson
しかしenumでは、新しいSomeEnum()を明示的に行うことはありません。私の場合、enumには1つの変数、つまり* instance *とargsのないprivateコンストラクタしかありません。このコンストラクタはいつ呼び出されますか? –