Java 如何遍历具有依赖关系的权限组树
我正在使用Java编写一个简单的用户权限系统,其中权限定义为短字符串(例如,权限“REBOOT”允许用户重新启动)。如果需要,可以将每个用户分配到多个组(例如,他们可能是VIP和主持人) 作为一个简单的示例,只包含几个组:Java 如何遍历具有依赖关系的权限组树,java,tree,dependencies,graph-theory,Java,Tree,Dependencies,Graph Theory,我正在使用Java编写一个简单的用户权限系统,其中权限定义为短字符串(例如,权限“REBOOT”允许用户重新启动)。如果需要,可以将每个用户分配到多个组(例如,他们可能是VIP和主持人) 作为一个简单的示例,只包含几个组: - Administrators Inherits from: Moderators, VIP Permissions: ["REBOOT", "PERMA_BAN"] - Moderators Inherits from: Default Permissions: ["T
- Administrators
Inherits from: Moderators, VIP
Permissions: ["REBOOT", "PERMA_BAN"]
- Moderators
Inherits from: Default
Permissions: ["TEMP_BAN", "KICK"]
- VIP
Inherits from: Default
Permissions: ["NO_POST_LIMIT"]
- Default
Inherits from: *None*
Permissions: ["POST", "PRIVATE_MESSAGE"]
管理员显式地拥有来自版主和VIP的权限,隐式地拥有来自默认值的权限(因为版主/VIP都是从默认值继承的)。这意味着,当代码解析其所有权限字符串时,权限列表中每个组的所有权限都将存在。版主只有默认权限,但没有VIP权限,因为他们只继承默认权限。。。因此,他们将只拥有组的权限和默认权限
这可以通过图形表示(其中边表示依赖项):
如何在Java中创建此图并按正确顺序加载组,以便在加载组时继承/依赖项可用
在本例中,默认值首先加载,因为它没有依赖项,然后是版主和VIP,因为他们只需要默认值,最后是管理员,因为它需要加载所有其他3个组?Check.Check。