我有一个Role对象,其中有一组Rolenames,我想检查用户是否具有特定角色。告诉我如何最好地做到美观而简洁。
Role.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;
}
但是我不太喜欢这种方式。你能建议一个更好的选择吗?
答案 0 :(得分:2)
您可以使用以下流:
boolean isFind =
user.getRoles()
.stream()
.map(Role::getName)
.anyMatch(n -> n == RoleName.ROLE_CLIENT);