1. ホーム
  2. java

[解決済み] なぜJavaではenumコンストラクタをprotectedやpublicにできないのですか?

2023-07-23 08:17:52

質問

タイトルの中に質問全体が含まれています。例えば

enum enumTest {

        TYPE1(4.5, "string1"), TYPE2(2.79, "string2");
        double num;
        String st;

        enumTest(double num, String st) {
            this.num = num;
            this.st = st;
        }
    }

コンストラクタは、デフォルトまたは private 修飾子がついている場合は問題ありませんが public または protected の修飾子があります。

どのように解決するのですか?

Enumsは、有限個のインスタンスを持つクラスだと考えてください。 最初に宣言したもの以外に、異なるインスタンスが存在することはあり得ません。

従って、publicやprotectedのコンストラクタを持つことはできません。

注: これはおそらく公式の理由ではありません。 しかし、私が考える最も理にかなっているのは enums をこのように考えています。