【发布时间】:2016-10-06 12:58:20
【问题描述】:
我有两个类,即 ChildOne 和 ChildTwo 扩展 Base 类需要 Base 和一个名为 AgeEnum 的枚举。有一种方法,即getAge()
在子类中很常见,现在我想在基类中移动那个常用方法,我也想做一些事情,这样当我在任何一个上调用 getAge() 时
对象(例如 - ChildOne.getAge())应该返回枚举中定义的那个孩子的年龄。
-
基类
public class BaseClass { ***// Define getAge() here somehow to get the dynamic value of the*** } -
儿童一班
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 映射关系?
-
为什么不把枚举作为基类的属性呢?您可以将它作为构造函数中的参数传递
标签: java spring design-patterns enums