java - 从代表某些工作日的 ENUM 中获取 ENUM 值的好方法是什么

标签 java

我有一个 ENUM只有 3 个常数。基于标志,命名为 weekend , ENUM.values() 应该返回 3 或 2 个常量。

public enum Weekday { 
    SUNDAY, MONDAY, TUESDAY;
}

public Weekday[] getDays() {
    boolean weekend = true;
    if (weekend){
        return Weekday.values() // this will reurn SUNDAY, MONDAY, TUESDAY
    } else { // when weekend is false
         return Weekday.values() // it should return on MONDAY, TUESDAY
      }
}
请提出建议,实现这一目标的合理好方法是什么。我可以使用以下代码实现它。不幸的是,公关审查员似乎对此并不满意。你能提出更好的方法吗?
我的解决方案。
 EnumMap<Weekday, Integer> days= new EnumMap<>(Weekday.class);
    days.put(Weekday.MONDAY, 1);
    days.put(Weekday.TUESDAY, 2);

    return days.keySet().toArray(new Weekday[0]); // this returns MONDAY and TUESDAY.

最佳答案

怎么样:

 public enum Weekday {
        SUNDAY, MONDAY, TUESDAY;
    }

    public Weekday[] getDays() {
        boolean weekend = callFromSomeAPI();
        return weekend ? Weekday.values() : new Weekday[] {Weekday.MONDAY, Weekday.TUESDAY};
    }
当然,在 Enum 的一个更典型的使用中 Weekday将代表一周中的所有 7 天 ,并使用变量(例如, weekendweekdays )来区分工作日和周末。就像是:
enum Weekday {
    MONDAY(false),
    TUESDAY(false),
    WEDNESDAY(false),
    THURSDAY(false),
    FRIDAY(false),
    SATURDAY(true),
    SUNDAY(true);

    private final boolean weekend;

    Weekday(boolean weekend) {
        this.weekend = weekend;
    }

    public static Weekday[] getDays(boolean weekend) {
        return Arrays.stream(values()).filter(i -> i.weekend == weekend).toArray(Weekday[]::new);
    }
}

关于java - 从代表某些工作日的 ENUM 中获取 ENUM 值的好方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65009986/

相关文章:

java - 尝试检索 Android 设备上的位置...适用于模拟器,但不适用于真实设备

java - 从点列表中查找最短路径

java - 想要使用 hibernate 查询中的事务从表中删除文件夹中的现有文档和数据库值

java - SWT (JFace) 中的 FontRegistry 和 Dispose

java - 部署在 spring-cloud-dataflow-server 中的服务如何连接到另一个数据库而不是数据流服务器使用的数据库?

java - 防止表单重新提交并在页面刷新时插入数据库

java - 用于短裤而不是字节的 ByteArrayOutputStream

java - 如何模拟类型转换的方法?

java - 在设置变量之前检查 null - 没有 if-else

java - 对于 Windows Xp 和 Windows 7,从 "My Documents"访问文件时出错