gpt4 book ai didi

java - 方法 枚举 isBigger()

转载 作者:行者123 更新时间:2023-12-02 04:17:23 27 4
gpt4 key购买 nike

我正在尝试在 Java 枚举中编写一个方法:isBigger(Valoration val),如果当前评级大于作为参数传递的评级,则返回 true,并抛出异常 ValorationNoValued if估值比较(或两者)为 NO_VALUED。

public enum Valoracion {
NO_VALUED(0),
SO_BAD(0),
BAD(2),
OK(4),
GOOD(6),
EXCELENT(8),
WOW(10);

....

public boolean isBigger(Valoration val) throws ValorationNoValued {
if (val == NO_VALUED) {
throw new ValorationNoValued("message");
}
else {
return val.getValor() > this.valor;
}
}
}

我想知道当前评分是否为 NO_VALUED,但不知道如何。

最佳答案

您始终可以通过 this 引用“当前对象”,无论它是否是enum。但是……

看来,您的enum有一个方法getValor()来返回数值。那么在那里拦截异常状态会比在比较方法中拦截异常状态要干净得多:

public enum Valoracion {
NO_VALUED (0) {
@Override int getValor() {
throw new ValorationNoValued("message");
}
},
SO_BAD (0),
BAD(2),
OK (4),
GOOD (6),
EXCELENT (8),
WOW (10);

....
int getValor() {
return valorValue;
}
public boolean isBigger(Valoration val) throws ValorationNoValued {
return val.getValor()>this.getValor();
}

这样,就不需要条件,并且 a.isBigger(b)b.isBigger(a) 之间的对称性是免费的。

如果您更喜欢条件而不是重写方法,您仍然可以将 getValor() 方法实现为

int getValor() {
if(this==NO_VALUED) throw new ValorationNoValued("message");
return valorValue;
}

无需关心 isBigger 方法中的两侧。

关于java - 方法 枚举 isBigger(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33171012/

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