有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

可扩展类上的java开关

在Java中,可以打开枚举。比如说你有

enum Color { RED, ORANGE, YELLOW ... }

那么你可以

switch (color) {
case RED:
    ...

现在,我对打开一类对象有一个特殊的要求,为了便于说明,我称它们为颜色,,但在运行时也会创建更多的对象。你不能用枚举来做这件事

当然,switch语句只能知道编译时定义的语句。没关系。如果在运行时我创建了青色、栗色和海蓝色,我仍然只需要打开基本颜色,如红色、绿色和蓝色。但我需要能够创建其他的

如果我可以创建class OtherColor extends Color ...,子类就可以了,但枚举不能子类化或子类化

我可以忘记枚举,只创建一个带有一些静态实例的常规类。。。但这样的话,开关将无法在这些设备上工作

我所知道的最接近的解决方案是class Colorswitch (color.toString())。这是次优的,因为这意味着在编译时不会捕获输入错误,并且必须在运行时花费额外的时钟周期进行字符串比较。(第二个最好的解决方案是分配整数ID标记,这会损害代码的可维护性。)

还有别的解决办法吗


共 (0) 个答案