The*_*eLQ 8 java enums annotations
在我的图书馆中有一个"用户级别"的概念.我提供了几个默认级别,但出于各种原因希望为用户提供使用自己级别的选项.
目前这被实现为
public interface AdminLevel {
public void name();
}
public enum StandardAdminLevels implements AdminLevel {
ADMIN,
ANONYMOUS
}
Run Code Online (Sandbox Code Playgroud)
问题是用户通常会在注释中传递他们所需的用户级别.我尝试过但失败的事情:
StandardAdminLevels.ADMIN.name()- 设置值失败"属性值必须是常量"有没有其他方法我想不到在注释中有可扩展的枚举?我试图坚持枚举,因为它们的清晰度和对无效值的基本保护,但我能想到的另一种方法是字符串常量.我遇到的问题是需要在每个单点使用用户级别进行验证,甚至可能在客户端代码中
有任何想法吗?
一个想法:每个可能的AdminLevel都是它自己的类.通过对Class这个类来注释.
public final class Admin implements AdminLevel { ... }
public final class Anonymous implements AdminLevel { ... }
@Requires(Admin.class) public void protectedMethod() { ... }
@interface Requires {
Class<? extends AdminLevel> value();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1049 次 |
| 最近记录: |