如何在Java中使用来自同一文件的枚举参数值中的常量?
我在我的项目中遇到了一个情况,我必须修改/重构一个枚举文件,并使用更好的编码标准。我甚至不允许创建一个新的常量文件或类似的文件 下面是我的问题的一个例子-如何在Java中使用来自同一文件的枚举参数值中的常量?,java,enums,Java,Enums,我在我的项目中遇到了一个情况,我必须修改/重构一个枚举文件,并使用更好的编码标准。我甚至不允许创建一个新的常量文件或类似的文件 下面是我的问题的一个例子- public enum Enumtricks { // 1. private static final String DESC = "A String"; ELEMENT("A String"); // want to use constant DESC // 2. priv
public enum Enumtricks {
// 1. private static final String DESC = "A String";
ELEMENT("A String"); // want to use constant DESC
// 2. private static final String DESC = "A String";
private final String description;
private Enumtricks(String description) {
this.description = description;
}
public String value() {
return this.description;
}
}
对于这两种情况,我都会收到错误消息-
1> 标记“字符串”上的语法错误
2> 在定义字段之前,无法引用该字段
那么,有没有一种方法可以定义常量&使用它们并避免使用字符串文字?您的约束非常奇怪。如果我理解正确,您希望在一个文件中包含多个枚举。这在理论上是可能的,但我不推荐:
public class EnumCollection {
public enum Enumtricks {
ELEMENT1("A String"),
ELEMENT2("Another String"),
ELEMENT3("Yet another String");
private final String description;
private Enumtricks(String description) {
this.description = description;
}
public String value() {
return this.description;
}
}
public enum AnotherEnum {
EN, UM, SA, RE, CO, OL;
}
}
这是我能让您在同一个文件中使用常量作为枚举的最接近方法
public enum Enumtricks {
ELEMENT(EnumConstants.DESC);
private final String description;
private Enumtricks(String description) {
this.description = description;
}
public String value() {
return this.description;
}
private static class EnumConstants {
private static final String DESC = "A String";
}
}
或者在
枚举
之外,但在同一编译单元(=同一文件)内添加一个接口,如下所示:
package test;
interface Constants {
String DESC = "A String";
}
public enum Enumtricks {
Enumtricks(Constants.DESC);
private final String description;
private Enumtricks(final String description) {
this.description = description;
}
public String value() {
return this.description;
}
}
这样,您就可以在
enum
前面对所有常量进行分组,我们将非常感谢您提供的任何帮助/建议。我不理解您的问题。请详细说明你的目标是什么。B) 你的问题是什么。你上面的代码看起来还可以。不能在枚举中定义常量字符串。没有必要这样做,因为您的元素定义就是这样。我有很多enum元素,所以有很多字符串文本,但我想在开头或中间位置显示所有元素。另外,我不允许创建另一个文件来存储所有文字。不,我不想在一个文件中创建多个枚举。我的枚举是父文件。无论如何,如果我创建一个父类,并将所有常量和枚举都保留在其中,它就会工作。但是我必须访问像-EnumCollection.EnumTricks.Element1这样的内容是的,您必须这样做。这就是为什么我提到这可能不是个好主意。所以要访问元素,我们必须再往下一层。这能有效地实现吗?@53by97不,这通常是一个坏主意,而且不符合Java编码惯例。枚举的最佳实践是每个枚举有一个文件(就像每个类有一个文件一样)。您可以将所有枚举文件放在一个包(文件夹)中。这里给出的所有解决方案都试图保持在给定的约束范围内。如前所述,最好更改这些约束。在项目中实现这一点(创建内部静态类)好吗?您也可以使用外部接口(它的私有性稍低,但在其他方面微不足道),但无论“好”与否,您在约束内没有其他选择,它都可以工作,那就随它去吧。谢谢你的建议!