5

私の質問は、「列挙型に int 識別子を含めることは可能ですか?」です。私はJavaプログラムを開発しています.数字と文字を含む識別子が必要ですが、eclipsはそれを受け入れません.

たとえば、public enum Tag{ 5F25, 4F, . . . }

この問題を解決する方法があるかどうか誰でも知っていますか! ありがとうございました

4

3 に答える 3

4

Enum インスタンスは、他の識別子と同じ Java 言語の命名規則に従う必要があります。数字で始めることはできません。

名前に絶対に 16 進数を含める必要がある場合は、それらすべてに文字/単語をプレフィックスとして付けます (たとえば、enum クラス自体)。

public enum Tag {
   Tag5F25,
   Tag4F,
   ...
}

または、アンダースコアとすべて大文字を使用することもできます:

public enum Tag {
   TAG_5F25,
   TAG_4F,
   ...
}

于 2013-10-30T13:37:24.960 に答える
3

あなたはプログラミングの法則と慣習を曲げようとしています。別のアプローチを取ることをお勧めします。

列挙型にはコンストラクターを含めることができます。列挙型の「インスタンス」はその中に作成されるため、それらは通常プライベートです。必要な情報 (ID、名前、キーワードなど) を提供できます。

この例では、コンストラクターにパラメーターを 1 つだけ指定して列挙型を実装しました。これは、必要な一意の ID です。

public enum Tag
{
    TAG_1(1),
    TAG_2(2),
    TAG_3(3);

    private final int id;

    private Tag(final int id)
    {
         this.id = id;
    }

    public int id() // Objective C style. Can be getId()
    {
         return id;
    }

    /**
     * Bonus method: get a Tag for a specific ID.
     *
     * e.g. Tag tagWithId2 = Tag.getTagForId(2);
     */
    public static Tag getTagForId(final int id)
    {
         for (final Tag tag : values())
              if (tag.id == id)
                   return tag;
         return null;
    }
}
于 2013-10-30T13:04:46.633 に答える
0

一言で言えば、違います。Java の列挙型は、基本的に、タイプセーフな列挙型パターンのシンタックス シュガーです。これは、enum が Java 識別子のリストであることを意味します。それらの名前は、識別子のすべての規則に従う必要があります。これらの規則の 1 つは、識別子名を数字で開始できないことです。

于 2013-10-30T13:17:11.737 に答える