可扩展类上的java开关
在Java中,可以打开枚举。比如说你有
enum Color { RED, ORANGE, YELLOW ... }
那么你可以
switch (color) {
case RED:
...
现在,我对打开一类对象有一个特殊的要求,为了便于说明,我称它们为颜色,,但在运行时也会创建更多的对象。你不能用枚举来做这件事
当然,switch语句只能知道编译时定义的语句。没关系。如果在运行时我创建了青色、栗色和海蓝色,我仍然只需要打开基本颜色,如红色、绿色和蓝色。但我需要能够创建其他的
如果我可以创建class OtherColor extends Color ...
,子类就可以了,但枚举不能子类化或子类化
我可以忘记枚举,只创建一个带有一些静态实例的常规类。。。但这样的话,开关将无法在这些设备上工作
我所知道的最接近的解决方案是class Color
和switch (color.toString())
。这是次优的,因为这意味着在编译时不会捕获输入错误,并且必须在运行时花费额外的时钟周期进行字符串比较。(第二个最好的解决方案是分配整数ID标记,这会损害代码的可维护性。)
还有别的解决办法吗
共 (0) 个答案