java - 通过另一个对象访问对象
问题描述
我有三个类:User
、UserCategory
和PatientCase
。
现在,在某些方法中,我需要检查类别或案例是否属于当前登录的用户。
用户:
private Long id;
private String firstName;
private String lastName;
private String emailAddress;
private String password;
private Set<UserCategory> userCategories;
用户类别:
private Long id;
private String name;
private User user;
private Set<PatientCase> cases;
患者案例:
private Long id;
private String caseTitle;
private LocalDate caseDate;
private Set<UserCategory> userCategories;
现在给定一个用户和一个类别,我可以通过执行此操作来检查该类别是否属于该用户(在这种情况下,我所做的不属于该用户):
private boolean checkIfCategoryDoesNotBelongToUser(UserCategory category, User user) {
return !category.getUser().getId().equals(user.getId());
}
问题是我如何判断PatientCase
该用户是否属于该用户。而且我不允许在课程中添加任何其他字段。我正在考虑做类似的事情:
private boolean checkIfCaseDoesNotBelongToUser(PatientCase patientCase, User user) {
return !patientCase.getUserCategories()
.stream()
.filter(c -> c.getUser().getId().equals(user.getId()))
.
另外我知道过滤器实际上并没有返回布尔值,所以也许,noneMatch
. 但不是很确定。
基本上,一个患者病例可以属于多个类别。一个用户可以有多个类别。请提出一些建议。
解决方案
您确实可以使用noneMatch
:
private boolean checkIfCaseDoesNotBelongToUser(PatientCase patientCase, User user) {
return patientCase.getUserCategories()
.stream()
.noneMatch(c -> c.getUser().getId().equals(user.getId()));
}
noneMatch
是短路的,所以false
一旦找到匹配项就会返回。
另外,我建议你不要用否定来命名你的方法,所以我宁愿写一个checkIfCaseBelongToUser
(use anyMatch
!) 并让调用者使用!
它来否定它。
推荐阅读
- ionic-framework - 我如何在 ionic 中制作自定义 CSS?
- python - How does one pass arguments from the URL to a view before rendering a new page?
- solr - Web 服务器 HTTP 标头 内部 IP 泄露 SOLR 端口
- java - AbstractCassandraTupleSink 的实现不可序列化
- c# - 需要使用func理解下面的代码
- javascript - 重复设置 translate3d(10px,0,0) 不会重复向右移动 div。如何让它发挥作用?
- haskell - 为什么这个 Haskell 语句在 GHCi 中工作但无法编译?
- php - 如何在 CodeIgniter 中显示数据库表的值?
- docker - 如何修复“错误:docker 版本低于 v1.7。需要“docker exec”的管道函数
- java - Android 自定义分享问题