における一般的な列挙型のキーを渡すために、すなわちBase
クラスを拡張しているChildOne
& ChildTwo
はBase
とAgeEnum
という名前の列挙が必要です。 1つのメソッドがあります。getAge()
が子クラスでよく使用されています。今では、基底クラスでその共通メソッドを移動したいので、私はgetAge()
を のオブジェクト(ex-ChildOne.getAge()
)その子の帰納年齢は列挙型で定義されます。はどのように私は2つのクラスを持つJavaコード
基本クラス
public class BaseClass { ***// Define getAge() here somehow to get the dynamic value of the*** }
子供1クラス
public class ChildOne extends BaseClass { public int getAge(){ return AgeEnum.ChildAge.CHILD_ONE.getValue(); } }
子供二級
public class ChildTwo extends BaseClass { public int getAge(){ return AgeEnum.ChildAge.CHILD_TWO.getValue(); } }
列挙
public class AgeEnum { public enum ChildAge { CHILD_ONE(12), CHILD_TWO(19); private ChildAge(final int text) { this.text = text; } private final int text; public int getValue() { return text; } } }
は、これまでのところ、私たちはこのような何かを行うことができれば、どのように私は子クラスのgetAge()
を呼び出す場合、この場合には、列挙型のコールでこれを構成するために、私は列挙型の値をすべて取得することで分析しています私がしなければならない(私はコンテキストからクラスのインスタンスを取得し、リフレクションを使ってクラス名を取得する可能性がある)子クラスを識別し、実行時にそのクラスならば列挙型定数を渡すことです:
public class BaseClass {
public int getAge(){
return AgeEnum.ChildAge.<dynamicAgeConstent>.getValue();
}
}
BaseClassとChildAge列挙型のインスタンスの間に1対1のマッピングがありますか? –
列挙型を基本クラスの属性にしてみませんか?それをコンストラクタの引数として渡すことができます –