私の質問は、「列挙型に int 識別子を含めることは可能ですか?」です。私はJavaプログラムを開発しています.数字と文字を含む識別子が必要ですが、eclipsはそれを受け入れません.
たとえば、public enum Tag{ 5F25, 4F, . . . }
この問題を解決する方法があるかどうか誰でも知っていますか! ありがとうございました
私の質問は、「列挙型に int 識別子を含めることは可能ですか?」です。私はJavaプログラムを開発しています.数字と文字を含む識別子が必要ですが、eclipsはそれを受け入れません.
たとえば、public enum Tag{ 5F25, 4F, . . . }
この問題を解決する方法があるかどうか誰でも知っていますか! ありがとうございました
Enum インスタンスは、他の識別子と同じ Java 言語の命名規則に従う必要があります。数字で始めることはできません。
名前に絶対に 16 進数を含める必要がある場合は、それらすべてに文字/単語をプレフィックスとして付けます (たとえば、enum クラス自体)。
public enum Tag {
Tag5F25,
Tag4F,
...
}
または、アンダースコアとすべて大文字を使用することもできます:
public enum Tag {
TAG_5F25,
TAG_4F,
...
}
等
あなたはプログラミングの法則と慣習を曲げようとしています。別のアプローチを取ることをお勧めします。
列挙型にはコンストラクターを含めることができます。列挙型の「インスタンス」はその中に作成されるため、それらは通常プライベートです。必要な情報 (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;
}
}
一言で言えば、違います。Java の列挙型は、基本的に、タイプセーフな列挙型パターンのシンタックス シュガーです。これは、enum が Java 識別子のリストであることを意味します。それらの名前は、識別子のすべての規則に従う必要があります。これらの規則の 1 つは、識別子名を数字で開始できないことです。