从int获取工作日

时间:2014-12-30 23:59:02

标签: java enums

我有这个枚举

public enum Weekday {
    Sunday(0), Monday(1), Tuesday(2), Wednesday(3), Thursday(4), Friday(5), Saturday(6);
    private int value;

    private Weekday(int value) {
        this.value = value;
    }



}

如果我知道我想要的那一天,那么我可以从那天获得价值,而且我现在正在大脑冻结并且正在尝试做反对派。并且无法弄清楚

所以我知道我有2号然后想要在周二返回工作日类型的变量吗?

我该怎么做?

感谢您的帮助:)

2 个答案:

答案 0 :(得分:3)

您可以使用Map然后创建一个类似getByCode的方法,您可以在其中传递日期编号作为参数,它将返回枚举。 E.g。

import java.util.HashMap;
import java.util.Map;

enum Weekday {
    Sunday(0), Monday(1), Tuesday(2), Wednesday(3), Thursday(4), Friday(5), Saturday(6);
      private int value;

      Weekday(int c){
         this.value =c;
      }


      static Map<Integer, Weekday> map = new HashMap<>();

      static {
         for (Weekday catalog : Weekday.values()) {
            map.put(catalog.value, catalog);
         }
      }

      public static Weekday getByCode(int code) {
         return map.get(code);
      }
   }

您可以像Weekday.getByCode(2)一样调用上述方法,它会返回Tuesday

答案 1 :(得分:1)

Weekday.values()返回一个包含所有枚举值的数组。 每个枚举值都有一个方法ordinal(),它在枚举声明中返回它的索引。

这种情况下,值等于索引,您可以简化代码:

public enum Weekday {
    Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday;
}

获取价值:

Weekday.Sunday.ordinal()

获取枚举值:

Weekday.values()[value]