我正在寻找一种可以高效/优雅地构造Java枚举的方法。这些枚举保存返回结果。
- 有一些功能,例如“删除项目”(枚举:OK,DOEsnT_EXIST,accESS_DENIED ..)或创建项目(确定,ALREADY_EXISTS,accESS_DENIED ..),changeItem(确定,INVALID_PARAMETER,INVALID_CLASS,accESS_DENIED)
- 如您所见,它们具有自己的枚举和共享的枚举。因此,在每个返回函数中都应实现一些枚举(OK,accESS_DENIED),而其他的则应互斥(DOEsnT_EXIST,ALREADY_EXISTS ...)。
- 还有一些复杂的函数,例如changeOrCreate,如果不存在则可以在其中创建项目,否则可以进行其他更改(枚举:所有createItem枚举,所有changeItem枚举)。
基本上我可以
- 为每个函数(createItemResult,changeItemResult ..)或 构建不同的枚举
- 将它们全部放入一个RESULT枚举类。
但是无论我选择什么,我都无法完成所有这些
- 当诸如“ changeOrCreate”之类的复杂函数失败时,我想知道返回的枚举“ accESS_DENIED”是由创建还是由更改引起的。
- 我非常希望任何具有相同enumType的函数的调用者
- (我希望函数no能够返回非法枚举,例如:createUser不应具有DOEsnT_EXIST)
有什么想法吗?还是返回类型枚举有任何约定?
更新: 我不能使用(Non-Standard-)Exceptions的原因是我必须提供一个API,并且要求不能抛出任何异常。