Java 带字符串的枚举
这是我的英语课Java 带字符串的枚举,java,string,enums,Java,String,Enums,这是我的英语课 public enum CSSFont { RezeptName("-fx-font: 22 calibri;"), RezeptNameClicked("-fx-font: 22 calibri; -fx-underline: true; -fx-text-fill: purple"), RezeptTab("-fx-font: 15 calibri;"); private String font; private CSSFont
public enum CSSFont {
RezeptName("-fx-font: 22 calibri;"),
RezeptNameClicked("-fx-font: 22 calibri; -fx-underline: true; -fx-text-fill: purple"),
RezeptTab("-fx-font: 15 calibri;");
private String font;
private CSSFont(String s) {
this.font = s;
}
public String getFont() {
return this.font;
}
}
如您所见,我创建了一个getFont()
函数来获取每个CSSFont对象的字符串。有没有一种方法可以直接在enum类中创建字符串对象(我需要JavaFX中setStyle()
方法的字符串),这样我就不必总是编写CSSFont.object.getFont()
,而是编写CSSFont.object
?我试图让CSSFont扩展字符串,但很明显,枚举只能实现接口。还是创建具有静态(最终)字符串属性的类的唯一解决方案
编辑:谢谢大家,似乎我真的不确定什么时候使用枚举,什么时候不使用,因为我只有一个属性(字符串),而且我甚至不需要枚举或比较这些枚举对象,我将使用带有静态最终字符串属性的类;) 您可以覆盖toString方法:
public enum CSSFont {
RezeptName("-fx-font: 22 calibri;"),
RezeptNameClicked("-fx-font: 22 calibri; -fx-underline: true; -fx-text-fill: purple"),
RezeptTab("-fx-font: 15 calibri;");
private String font;
private CSSFont(String s) {
this.font = s;
}
public String getFont() {
return this.font;
}
public String toString(){
return this.font;
}
}
然后您可以获得如下字体:
CSSFont.RezeptName.toString()
您可以使用以下内容:
public enum MyType {
ONE {
public String toString() {
return "this is one";
}
},
TWO {
public String toString() {
return "this is two";
}
}
}
使用以下方法进行测试:
public class EnumTest {
public static void main(String[] args) {
System.out.println(MyType.ONE);
System.out.println(MyType.TWO);
}
}
最初取自,您实际需要的似乎是一组字符串常量。不是enum。只需重写toString()。。。另外,由于
enum
常量隐式地public static final
标准命名约定适用,即上下划线
而不是PascalCase
@JB是的,但enum不正是这样吗?一组固定的最终属性?在一个单独的类中设置一组字符串常量也是我上面建议的解决方案,但我更想使用enumn,因为enum就是为了这个而存在的,不是吗?试试psf字符串并放松一下。这将比样板少3倍。不。枚举是一个类。它定义了一个类型。其成员是此类的实例。它们具有可比性,并具有序号。如果您不需要这些特性中的任何一个,而只需要一组常量字符串,请定义一组常量字符串。就像方法采用字符串一样,这将不起作用。如果enum
是串接的一部分,例如,String
串接。您必须编写myMethod(CSSFont.VALUE.toString())
,这与OP已有的方法没有什么不同;也许更不具描述性。是的,在Oracle API中,我认为toString()方法应该返回枚举对象的名称,而不是字符串属性……请参阅。这是同样的建议,并导致同样的问题。但它还有一个额外的缺点,那就是添加了大量的样板代码。