Java中字符串的层次结构。一个大的替代品有哪些?

时间:2016-12-30 18:33:35

标签: java enums

我正在寻找一种使用枚举器或(抽象)类实现字符串层次结构的好方法。

我将这样做来组织应用程序的功能权限,因为这些权限保留在数据库中,我需要一些方法来跟踪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个条目)。

我会在两种情况下在代码中使用它。

  1. 注释:@HasPermission(FeaturePermissions.AppOne.SomeFeature.getName())
  2. 有条件:if(user.hasPermission(FeaturePermissions.AppOne.SomeFeature.getName())
  3. 最好的方法是什么?如果我需要更多“级别”,例如FeaturePermissions.AppOne.BigFeature.SomeFeature.getName(),那么最佳策略是什么?

    谢谢!

1 个答案:

答案 0 :(得分:-2)

我建议使用地图。您可以嵌套地图,并且很容易将它们作为json存储在许多数据库中。这将节省您编写大量样板代码。

您可以使用HashMap和String键,或EnumMap和枚举键。