enumについて質問があります(簡単なものかもしれませんが....)。これは私のプログラムです:
public class Hello {
public enum MyEnum
{
ONE(1), TWO(2);
private int value;
private MyEnum(int value)
{
System.out.println("hello");
this.value = value;
}
public int getValue()
{
return value;
}
}
public static void main(String[] args)
{
MyEnum e = MyEnum.ONE;
}
}
そして私の質問は、なぜ出力が
hello
hello
ではなく
hello
?
コードはどのようにしてコンストラクターに2回「行き」ますか?最初の時はいつですか?そしてなぜ列挙型コンストラクタは公開できないのですか?それが1回だけではなく2回印刷する理由ですか?
列挙型はシングルトンであり、クラスのロード時にインスタンス化されます。つまり、2つの「こんにちは」はインスタンス化MyEnum.ONE
とMyEnum.TWO
(印刷value
も試してみて)から来ます。
これは、コンストラクタがパブリックであってはならない理由でもあります。Enumは、各値のインスタンスが1つだけ存在することを保証します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加