【发布时间】:2020-03-06 02:56:20
【问题描述】:
是否可以将枚举值作为 Java 中的私有静态最终常量?
我目前正在为 Issue 类编写一个 IssueTest 类。在问题类中,我有一个问题类型的内部枚举,它可能是一个错误或增强。
public enum IssueType {
ENHANCEMENT,
BUG;
}
在问题的构造函数之一中,参数之一是问题类型。
public Issue(IssueType type, String state, String summary) {
}
我正在尝试编写一个案例来测试这个构造函数。在我的测试类中,我尝试像这样为 IssueTypes 创建一个常量
private static final IssueType TYPE_BUG = BUG;
private static final IssueType TYPE_ENHANCEMENT = ENHANCEMENT;
但是这些行会产生编译器错误。我不确定如何在我的测试类中使用 IssueType 常量来测试构造函数。非常感谢任何指导!
【问题讨论】:
-
您可能希望它成为
public static enum。然后在测试类中,可以写YourClass.IssueType.ENHANCEMENT。没有必要为此添加额外的变量。 -
@DawoodsaysreinstateMonica 枚举不是隐式静态的吗?
-
你可以像
new Issue(IssueType.BUG, "OPEN", "summary");一样创建你的对象。如果我是你,我不会费心创建一个变量来存储枚举值。枚举非常易读,IssueType.BUG准确地说明了它是什么。 -
是的,嵌套枚举类型是implicitly static。如果 OP 不喜欢
IssueType.BUG,他可以将Issue.IssueType.*静态导入到测试类中。 -
您忘记告诉我们编译器错误是什么,但您需要
IssueType TYPE_BUG = IssueType.BUG。但是您实际上根本不需要这些静态决赛。只需使用适当的限定枚举值。你真的只是用这种双重谈话来混淆你的代码。