【发布时间】:2017-05-09 08:41:33
【问题描述】:
我们可以将对象传递给枚举抽象方法并在枚举中进行计算吗?这是一个场景,我有四个常量,每个常量都有自己的值。基于常量,我将在我的方法中进行计算。相反,我想在枚举中进行计算并希望得到响应。要在枚举中进行计算,我必须将两个/三个引用对象传递给枚举方法......
例如:将学校视为枚举,常量为 TEACHER(LOWLEVELACCESS)、STUDENT(NOACCESS)、OFFICEADMIN(OFFICEACCESS)。
在枚举中,我有抽象方法 process,它接收 USER POJO、字符串作为参数并更新对象中的某些字段,并将相同的 USER POJO(更新后)返回给调用者。这样我就可以在枚举本身中同步常量及其逻辑。
所以我的问题,
在枚举中有这个实现可以吗? (我已经看到大多数示例将枚举处理为存储常量值而不将它们用于任何计算)
这种计算可以通过使用类中的方法来完成,如果我在枚举方法中进行计算有什么好处?
是否可以在枚举中创建getter/setter方法?
提前致谢!!
【问题讨论】:
-
你能发布一些关于你所追求的(伪)代码吗?基本上你可以向枚举添加方法并在那里进行计算,但它让我觉得设计味道很糟糕(至少不知道更多)。
-
@Thomas 我同意潜在的设计气味。我不会一概而论,但我认为如果您以这种方式过度利用枚举,可能会出现这种情况。
-
枚举常量具有行为是完全可以接受和惯用的。考虑到“代码气味”就是否定了自己 90% 的枚举能力。