确定枚举的较高/最大值

时间:2018-07-19 14:12:52

标签: java spring

我有下面的课程,我希望能够确定 在两个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 );

?>

3 个答案:

答案 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