[java]enum
Enumの背景を導入
たとえば、
public final static int APPLE = 1;
public final static int PEACH = 2;
public final static int GOOGLE = 1;
public final static int APPLE = 2;
APPLEが重なる.どうやって解決しますか?
題名
FRUITE_APPLE
COMPANY_APPLE
もっと簡潔にしたいなら?
interface FRUIT {
int APPLE = 1, PEACH = 2, BANANA = 3;
}
interface COMPANY {
int GOOGLE = 1, APPLE = 2, ORACLE = 3;
}
もっと簡潔になったどうしたんですか.
前述は共通静的finalであることを示している.
さっき接頭辞をつけて名前ごとの衝突性を下げたいと思っていましたが、今はインタフェースで果物なのか企業の定数なのかを隔離しているので、名前が衝突する確率はありません.
それも問題ですか。
例えば、
FRUIT.APPLE == COMPANY.APPLE
.定数が等しい場合、実際にはtrueです.そもそも比較すらできない.
また,コンパイル時にも問題がないので,後で問題を見つけるのは難しい.
この問題を解決しますか?
まず問題の原因を見てみましょう
intという同じデータ型を使用していますので、比較できます
左、右の項目が異なるデータ型を使用している場合は、比較できません.
では、違うデータ型を試してみましょう.
class Fruit {
public static final Fruit APPLE = new Fruit();
public static final Fruit PEACH = new Fruit();
public static final Fruit BANANA = new Fruit();
}
class Company {
public static final Fruit GOOGLE = new Fruit();
public static final Fruit APPLE = new Fruit();
public static final Fruit ORACLE = new Fruit();
}
データ型によってはまったく比べものにならないでも問題は?
主に書き込み定数はswitch文とともに使用されますが、switch文に入力できるデータ型はprimitiveデータ型のみであり、参照型と現在学習するenumに変換できます.
Enumはどのように使いますか?
enum Fruit {
APPLE, PEACH, BANANA;
}
上のclass Fruitに比べて使いやすくなっています.なぜenumを使わなければならないのですか?
Enumとジェネレータ
写真はFruitにcolorという状態を示しています.
まず、フィールドに変数を宣言し、写真に示すように構造関数として使用します.
enumもクラスなので、メソッドも利用できます.
カラーがポップアップされると、データを保護するために
リターンStringのgetColor()メソッドを作成して取り出すのも良いアイデアです.
各enumを呼び出す
for(Fruit f : Fruit.values()){
print(f);
}
Reference
この問題について([java]enum), 我々は、より多くの情報をここで見つけました https://velog.io/@kyukim/enumテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol