代码之家  ›  专栏  ›  技术社区  ›  InverseFalcon

如何使用多个枚举类型编写注释?

  •  3
  • InverseFalcon  · 技术社区  · 15 年前

    我正试图编写一些注释来帮助将测试用例方法与各种元数据关联起来。到目前为止,我的注释包括错误修复、用例和需求。我的最终目标是编写一个注释处理器来显示哪些测试用例与单个错误修复、用例和需求相关联。

    当我只是为自己的项目实现这个时,我为每个测试关联类别为我的项目创建了特定的枚举。例如,我有projectusecase枚举,可以将其作为值传递给我的测试方法上的usecase注释。这使得在一个地方添加额外的用例或修改用例变得容易。

    现在,我想让我的工作中的其他开发人员可以使用这个代码。当然,他们将在其他项目上工作,使用不同的用例、需求和错误修复。

    以下是我遇到的问题:

    1. 枚举不能扩展,所以我不能有其他人可以为其自己的项目扩展的基本用例枚举。
    2. 注释属性的值必须是常量。这会阻止我在枚举上使用接口标记(testsAssociation),并将testsAssociation接口用于注释的值。此外,这还防止我在批注中使用字符串值,并在使用批注时传入枚举名称,例如:@usecase(projectusecase.general.name())。

    据我所知,这使我只需要使用值的原始字符串,这剥夺了类型安全性和快速重构的能力。使用常量字符串类代替枚举似乎是处理这一问题的最佳方法,因为每个开发人员都可以使用自己的。

    我能想到的另一件事是引用一个枚举类(或一个常量字符串类),而不将该类包含在jar中,留给用户实现。

    有什么建议或解决办法吗?

    我还想知道是否有项目已经提供了类似的功能。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Kevin Bourrillion Gergely    15 年前

    是的。

    唯一的好方法是允许任意的用户定义注释,这样如果我的枚举是fooenum,我就可以定义使用它的fooannotation。您的框架可以通过查看是否 它本身是元注释的 @UseCase (或者随便你怎么说)!