我有下面的课程,我希望能够确定 在两个dto之间传递的高级角色。枚举角色 下面是根据资历安排的。秘书高于清洁工 并且经理高于秘书和清洁工。
如何确定哪个角色更高并返回jobFunction?
<?php
$search_query = get_search_query();
echo $search_query;
$args = array(
'posts_per_page' => '-1',
's' => $search_query
);
$query = new WP_Query( $args );
?>
答案 0 :(得分:1)
枚举类型为Comparable
,其顺序基于其序数(即Secretary > Cleaner
),这仅意味着您不需要任何其他比较逻辑。
您可以使用:
Role greater = userDto1.getJobFunction()
.compareTo(userDto2.getJobFunction()) > 0 ?
userDto1.getJobFunction() : userDto2.getJobFunction();
//well, this doesn't deal with the case of equal roles.
return UserDto.builder()
.jobFunction(greater)
.build();
以上方法使用Comparable.compareTo
(请参阅docs here)方法来确定两个角色中哪个角色更大,然后选择其对应的对象。
答案 1 :(得分:0)
您可以将成员添加到枚举中,以使代码可读性
public enum Role {
CLEANER (1),
SECRETARY(2),
MANAGER (3),
DIRECTOR (4);
private final int level;
Role(int level) {
this.level = level;
}
public int getLevel() {
return this.level;
}
}
然后按级别进行测试:
if ( userDto1.getJobFunction().getLevel() > userDto2.getJobFunction().getLevel() ) {
...
}
答案 2 :(得分:-1)
给他们一个这样的号码:
public enum Role {
Cleaner = 0,
Secretary = 1,
Manager = 2,
Director = 3;
}
(但是我不确定是否可以像这样比较它们)
或者尝试Ordinal
userDto1.ordinal > UserDto2.ordinal