はのは、私はいくつかのマシンを持っているとしましょう:は、列挙型のエントリーを比較する - Javaの
//Test code of course.
public class Start{
public static void main(String args[]){
System.out.println(Machine.COFFEE_GRINDER.getCatalogId());
System.out.println(Machine.COFFEE_MACHINE.isOfType(Machine.BASIC_MACHINE));
//The above should be true.
}
private enum Machine {
BASIC_MACHINE (-1),
BEVERAGE (-1),
COFFEE(-1),
COFFEE_GRINDER (5),
COFFEE_MACHINE (6),
GARDEN (-1),
LAWN_MOWER (28);
private final int catalogId;
public int getCatalogId(){
return catalogId;
}
public boolean isOfType(Machine to){
return this == to;
}
Machine (int catalogId) {
this.catalogId = catalogId;
}
}
}
の例では、彼らがカタログに表示され、それらに関連付けられたID番号を持っていると同じようにマシンがある上に。セクションのセクションとセクションもあります。したがって、BEVERAGEマシンはまだBASIC_MACHINEです。 COFFEEマシンはまだBEVERAGEマシンです。
プログラム内のいくつかの機能は、機能を実行する前に、マシンが実際にBEFERAGEマシンであるかどうかをチェックする必要があります。カタログのCOFFEE_GRINDERとCOFFEE_MACHINEの両方がチェックアウトされ、関数が実行されます。
私が探している動作は、instanceofまたは抽象クラスの継承に匹敵します。とにかくCOFFEE_MACHINEはBASIC_MACHINEのタイプです。私はそれをチェックしたいと思います。
ので:
Machine.COFFEE_MACHINE isa Machine.COFFEE
Machine.BEVERAGE isa MACHINE.BASIC_MACHINE
Machine.LAWN_MOWER isa Machine.GARDEN == Machine.BASIC_MACHINE
Machine.COFFEE_MACHINE isnota Machine.COFFEE_GRINDER
Machine.LAWN_MOWER isnota Machine.COFFEE
あなただけの最も専門的な 'enum'値から始まる継承パスを横断し、すべてのステップを確認する必要があります。むしろ簡単ですね。 – Jack
「VENDING」は未定義です。あなたは '飲み物 'を意味しましたか? – Andreas
列挙定数は定数なので、 'Machine.COFFEE_MACHINE = Machine.COFFEE'などを代入することはできません。 "何かを実装しますか?"あなたが達成しようとしている「何か」が何であるかを記述することは役に立ちます。タイトルには継承が記載されていますが、匿名のボディクラスを除いて、enumをサブクラス化することはできません。また、継承と何が関係しているかについては言及していません。それぞれの定数を知るために "型を調べる"必要はありません。それはオブジェクトで、型は 'Machine'です。示されているように、あなたのコードはコンパイルされません。あなたが望むものを明確にし、コンパイル可能なコードを提供してください。 –