Java で Enum を宣言する
Java で DownloadType
の enum
を宣言することは、この記事のトピックになります。 enums
の目的から見ていきましょう。
Java における Enums
の目的
- 列挙型は、
integer
などの外部値に依存する必要なく、プログラム内でオブジェクトのコレクションを定数として維持できるようにするために使用されます。 - Java では、
enums
をswitch
ステートメントの入力として使用でき、他の比較方法の中でも特に==
または等価演算子を使用して安全に比較できます。
enum
は基本的にその型のオブジェクトであり、プリミティブではないため、必要に応じてメソッドを呼び出したり、.value
を使用して enum
から値を抽出したりする必要がありません。
まず、int
が必要かどうかを自問する必要があります。 次に、次のセクションで説明する 2つの結果が考えられます。
int
が必要です
整数が必要な場合は、型の安全性が失われ、ユーザーが無効な情報を API に送信する可能性があるという危険を冒してもかまいません。 以下の定数も整数として宣言できます。
静的メンバーしかなく、Java で静的クラスをシミュレートしたい場合は、コンストラクターを private
にします。
public final class DownloadType {
public static final int audio = 0;
public static final int video = 1;
public static final int audio_and_video = 2;
private DownloadType() {}
}
.ordinal()
関数は、値フィールドが存在するかどうかに関係なく使用できるため、enum
は次のように定義できます。
enum DownloadType { audio, video, audio_and_video }
enum
値に一致する数値を取得するには、.ordinal()
関数を使用します。 列挙された各値には、ゼロから始まり、宣言された同じシーケンス内の連続する値ごとに 1 ずつ増加する一意の番号が自動的に割り当てられます。
DownloadType.audio_and_video.ordinal();
int
不要
enum
の整数値は常に信頼できるとは限りません。 代わりに値自体を使用してください。
関連付けられた整数が不要な場合は、代わりにこれを試してください。
private enum DownloadType { audio, video, audio_and_video }
DownloadType dt = MyObj.getDownloadType();
if (dt == DownloadType.audio) {
}
switch
および if()
本体にロジックを記述して、アクションを実行できます。 さらに、if()
条件の代わりに switch
ステートメントを使用できます。
private enum DownloadType { audio, video, audio_and_video }
DownloadType dt = MyObj.getDownloadType();
switch (dt) {
case audio:
break;
case video:
break;
case audio_and_video:
break;
}
良い習慣
- 列挙定数の代わりに整数定数を使用すると、プログラムの型安全性が損なわれます。 したがって、そうしないようにしてください。
- 必ずしもそうする必要がない場合は、コード内で整数と
enum
を組み合わせないでください。
I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.
LinkedIn