gpt4 book ai didi

java - Groovy 枚举中的计算值

转载 作者:行者123 更新时间:2023-11-30 06:10:56 29 4
gpt4 key购买 nike

我需要创建一个具有一些预定义值的枚举或类,并且必须有一个选项来计算其他值。假设我们有这个枚举:

enum Duration {

ONE_HOUR("1${DurationUnits.DURATION_SUFFIX_HOUR}"),
ONE_DAY("24${DurationUnits.DURATION_SUFFIX_HOUR}"),
ONE_WEEK("7${DurationUnits.DURATION_SUFFIX_DAY}"),
ONE_MONTH("30${DurationUnits.DURATION_SUFFIX_DAY}")

String duration

Environment(String duration) {
this.duration = duration
}

static String custom(Date startTime, Date endTime) {
// TODO Calculate difference in days between the two dates
}

private static class DurationUnits {
public static final String DURATION_SUFFIX_HOUR = "h"
public static final String DURATION_SUFFIX_DAY = "d"
}

}

所以我的问题是我是否可以定义一个枚举值,比如说 CUSTOM,它代表所有非预定义值。即,custom(Date a, Date b) 方法的通用值。我不知道该怎么做,实际上我认为这不可能。

作为替代方案,我正在考虑创建一个类而不是枚举,如下所示:

class Duration {

private static final String DURATION_SUFFIX_HOUR = "h"
private static final String DURATION_SUFFIX_DAY = "d"

/** Predefined values */

static final String ONE_HOUR = "1${DURATION_SUFFIX_HOUR}"
static final String ONE_DAY = "24${DURATION_SUFFIX_HOUR}"
static final String ONE_WEEK = "7${DURATION_SUFFIX_DAY}"
static final String ONE_MONTH = "30${DURATION_SUFFIX_DAY}"

static String custom(Date startDate, Date endDate) {
// TODO Calculate difference in days between the two dates
}

}

你认为最好的方法是什么?这个持续时间将是调用 REST Web 服务的方法的输入参数,这就是为什么我试图将它定义为枚举而不是仅仅传递一个字符串。

最佳答案

您可以使用字符串追加。

ONE_HOUR("1" + DurationUnits.DURATION_SUFFIX_HOUR),
ONE_DAY("24" + DurationUnits.DURATION_SUFFIX_HOUR),
ONE_WEEK("7" + DurationUnits.DURATION_SUFFIX_DAY),
ONE_MONTH("30" + DurationUnits.DURATION_SUFFIX_DAY);

但是使用 TimeUnits 可能会更好

ONE_HOUR(1, TimeUnit.HOUR),
ONE_DAY(1, TimeUnit.DAY),
ONE_WEEK(7, TimeUnit.DAY),
ONE_MONTH(30, TimeUnit.DAY);

注意:并非所有月份都有 30 天。

您还可以使用 Duration持续一段时间。

Duration ONE_HOUR = Duration.ofHours(1);
Duration ONE_DAY = Duration.ofDays(1);

这将允许您根据需要创建更多持续时间。

关于java - Groovy 枚举中的计算值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35013532/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com