在我的图书馆中有一个“用户级别”的概念。我提供了几个默认级别,但出于各种原因希望让用户可以选择使用他们自己的级别。
目前这被实施为
public interface AdminLevel {
public void name();
}
public enum StandardAdminLevels implements AdminLevel {
ADMIN,
ANONYMOUS
}
问题是用户通常会在注释中传递他们所需的用户级别。我尝试过但失败的事情:
- 使用 AdminLevel 作为类型 - 因“注释成员的类型无效”而失败
- 使用字符串作为类型,但设置值
StandardAdminLevels.ADMIN.name()
- 失败,“属性值必须是常量” - 使 StandardAdminLevels 成为一个最终类,它没有为每个级别(本质上是一个枚举)实现任何具有公共静态最终字段的东西 - 因“注释成员的类型无效”而失败
有没有其他我想不出的方法可以在注释中使用可扩展的枚举?由于枚举的清晰度和对无效值的基本保护,我试图坚持使用枚举,但我能想到的唯一其他方法是字符串常量。我遇到的问题是,需要在使用用户级别的每个点进行验证,甚至可能在客户端代码中
有任何想法吗?