gpt4 book ai didi

Java 设计 : Enum state?

转载 作者:行者123 更新时间:2023-12-04 05:56:19 24 4
gpt4 key购买 nike

我意识到(也阅读了关于 SO 的其他文章)将状态添加到枚举常量是糟糕的设计(或者更好地说在我的情况下它也没有意义)。

尽管如此,我现在发现自己处于一种需要与此类似的情况。
我正在编写的应用程序使用错误常量(枚举),我使用它来通过将错误添加到 Map<Error, ErrorInfo> 来指示错误。 (请注意,这些不是应用程序错误,而是属于应用程序一部分的“错误”)。
好吧 - 我现在意识到我实际上还需要为这些指示 INFO、WARN、FATAL 的 ErrorLevel。
由于错误的 ErrorLevel 取决于它发生的上下文,我不能静态地将 ErrorLevel 分配给错误枚举,换句话说,一个 Error.E1可以是ErrorLevel.WARN一次,但可能是 ErrorLevel.FATAL下一次。

我正在考虑如何最好地合并此 ErrorLevel在我的设计中,但到目前为止我想出的只是引入一个简单地包装一个 Error 的新类。和一个 ErrorLevel并在 Map 内使用它而不是 Error .

由于错误及其严重性在我看来一定很常见,我相信有更聪明的方法可以做到这一点,所以我非常感谢您关于如何更好地设计它的想法。

--qu

最佳答案

如果我正确理解了您的问题,那么将 transient 状态放入枚举将无法解决问题。由于通过更改错误级别,每个枚举类型只有一个实例,因此您不仅会针对您正在评估的当前错误更改它,还会针对应用程序中相同类型的所有错误更改它。

您写道,错误级别取决于上下文,同时 ErrorInfo 描述了错误发生的上下文。如果您可以根据错误类型和上下文计算错误级别,我会建议一些静态方法

public static ErrorLevel getLevel(Error, ErrorInfo) {
//..
}

关于Java 设计 : Enum state?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9477849/

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