java - 构造返回结果枚举

标签 java enums conventions

我正在寻找一种能够以高效/优雅的方式构造java枚举的方法。这些枚举保存返回结果。

  • 有“删除项目”(枚举:OK、DOESNT_EXIST、ACCESS_DENIED..)或创建项目(OK、ALREADY_EXISTS、ACCESS_DENIED..)、changeItem(OK、INVALID_PARAMETER、INVALID_CLASS、ACCESS_DENIED)等功能
  • 如您所见,它们都有自己的和共享的枚举。因此,一些枚举应该在每个返回函数中实现(OK,ACCESS_DENIED),而其他枚举则是独占的(DOESNT_EXIST,ALREADY_EXISTS ...)。
  • 此外,还有像changeOrCreate这样的复杂函数,如果项目不存在,则可以在其中创建项目,否则可以进行更改(枚举:所有createItem枚举,所有changeItem枚举)。

基本上我可以

  1. 为每个函数构建不同的枚举(createItemResult、changeItemResult..)或
  2. 将它们全部放入一个 RESULT 枚举类中。

但无论我选择什么,我都永远无法完成所有这些

  • 当像“changeOrCreate”这样的复杂函数失败时,我想知道返回的枚举“ACCESS_DENIED”是由创建还是更改引起的。
  • 我非常希望任何函数的调用者获得相同的 enumType
  • (我希望函数 no 能够返回非法枚举。例如:createUser 不应该有 DOESNT_EXIST)

有什么想法吗?或者返回类型枚举有什么约定吗?

更新: 我不能使用(非标准)异常的原因是我必须提供一个 API,并且要求不能抛出任何异常。

最佳答案

When a complex function like "changeOrCreate" fails, I want to know whether the returned enum "ACCESS_DENIED" was caused by the creation or the change.

然后将它们命名为 CREATE_DENIEDCHANGE_DENIED 或类似名称。

I would highly prefer the caller of any function getting the same enumType

所以执行您建议的一个 RESULT 枚举类。

I would prefer the functions no to be able to return illegal enums.

由于您正在编写函数,因此您可以控制它返回哪个枚举,即您确保 createUser 永远不会返回 DOESNT_EXIST

关于java - 构造返回结果枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61330089/

相关文章:

java - Java 中的 EnumMap 是完美的 HashMap 吗?

c# - WebAPI 中的枚举返回字符串值

python - logger 应该是参数还是全局变量?

Ruby: bool 属性命名约定和使用

java - 获取每个JTextArea的文本

java - QUARTZ Job Scheduler - JobListener 问题 [JAVA]

swift - Swift 2 中的枚举

java - 在 Java 中处理无效输入

java - 在 Apache Flume 1.5 中的何处放置自定义 jar?

java - 在学习编程的同时学习代码约定