我正在寻找一种使用枚举器或(抽象)类实现字符串层次结构的好方法。
我将这样做来组织应用程序的功能权限,因为这些权限保留在数据库中,我需要一些方法来跟踪Java代码中的功能以验证用户的权限。
我知道一些替代方案,例如:
public abstract class FeaturePermissions {
public enum AppOne implements IEnum {
SomeFeature("permission name 1");
private String name;
FeatureOne(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
public enum AppTwo implements IEnum {
SomeFeature("permission name 2");
private String name;
AppTwo(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
}
我可以使用:
FeaturePermissions.AppOne.SomeFeature.getName()
但我想在不同的枚举文件中分离AppOne和AppTwo,但保持上面的调用,因为这个枚举将来会非常大(每个200个条目)。
我会在两种情况下在代码中使用它。
@HasPermission(FeaturePermissions.AppOne.SomeFeature.getName())
if(user.hasPermission(FeaturePermissions.AppOne.SomeFeature.getName())
最好的方法是什么?如果我需要更多“级别”,例如FeaturePermissions.AppOne.BigFeature.SomeFeature.getName()
,那么最佳策略是什么?
谢谢!
答案 0 :(得分:-2)
我建议使用地图。您可以嵌套地图,并且很容易将它们作为json存储在许多数据库中。这将节省您编写大量样板代码。
您可以使用HashMap和String键,或EnumMap和枚举键。