我有一个Role对象,其中有一组Rolenames,我想检查用户是否具有特定角色。告诉我如何最好地做到美观而简洁。

角色.java

@Table(name = "roles")
public class Role {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Enumerated(EnumType.STRING)
    @NaturalId
    @Column(length = 60)
    private RoleName name;


RoleName.java:

public enum RoleName {
    ROLE_ADMIN,
    ROLE_MANAGER,
    ROLE_CLIENT,
    ROLE_USER,
}


现在我的搜索看起来像这样:

boolean isFind = false;
        for (Role role : user.getRoles()) {
            isFind = role.getName().equals(RoleName.ROLE_CLIENT);
            if (isFind) break;
        }


但是我真的不喜欢这种方式。您能建议一个更好的选择吗?

最佳答案

您可以使用以下流:

boolean isFind =
    user.getRoles()
        .stream()
        .map(Role::getName)
        .anyMatch(n -> n == RoleName.ROLE_CLIENT);

09-27 08:22