动态选择一个字段以在Java中更新

我在Java 8中有一个类似的类:

class state
{
   LocalDateTime date1;
   LocalDateTime date2;
   LocalDateTime date3;
   LocalDateTime date4;
   LocalDateTime date5; 
}

根据某些条件,我将不得不选择日期字段之一以用utc时间对其进行更新。我必须通过一次更新1个字段来创建此类的实例,其余字段将为空。

我可以在下面做,但我想知道是否有任何优雅的方法来实现这一目标。这里的状态是一个枚举。

   switch case(status)
   case "1"
     new state(UTC.now, null,null, null, null);
   case "2"
     new state(null, UTC.now, null, null, null);
评论
  • 喔不昰玩具
    喔不昰玩具 回复

    一旦决定要创建单独的字段,就失去了优雅地执行此操作的能力。

    class State {
        List<LocalDateTime> dates = new ArrayList<>();
    }
    

    now it can be as simple as: state.getDates().set(Integer.parseInt(status), ...);

    如果“状态”不是数字,则可能是:

    class State {
        Map<String, LocalDateTime> dates = new HashMap<>();
    }
    

    and then: states.put(status, ...);

    有很多其他想法。