【发布时间】:2019-07-16 16:52:36
【问题描述】:
在查看 jhipster 时,我偶然发现了以下课程
public final class AuthoritiesConstants {
public static final String ADMIN = "ROLE_ADMIN";
public static final String USER = "ROLE_USER";
public static final String ANONYMOUS = "ROLE_ANONYMOUS";
private AuthoritiesConstants() {
}
}
我想知道为什么他们不使用枚举,例如
public enum AuthoritiesConstants {
ROLE_ADMIN,
ROLE_RESPONSABLE,
ROLE_MANAGER,
ROLE_COLLABORATEUR
}
使用枚举有什么缺点吗?
【问题讨论】:
-
并非如此。他们还可以使用枚举并向其添加一个字符串字段,实际上具有相同的功能。 (枚举就像类,你可以给它们添加方法和字段)
-
是否有可能添加您自己的权限?如果是这样,它就不可能是一个枚举。
-
一些 Spring 注释类被设计为接受
Strings 作为它们的值,而不是Enums。也许是这样 -
@NikolayShevchenko 你总是可以使用
name()来获得Enum元素的字符串表示,所以这并不是什么大问题。 -
@PiotrWilkin 你错了。在注解中使用
.name()会失败,并出现编译时错误attribute value must be constant。您可以在此处查看示例stackoverflow.com/q/28031784/2224047