Enum with Strings

时间:2016-06-18 12:06:49

标签: java string enums

这是我的enmun课程

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对象的String。有没有办法直接在枚举类中生成String对象(我需要JavaFX中的setStyle()方法的String),这样我就不必总是写CSSFont.object.getFont()而是{{} 1}?我试图让CSSFont扩展String,但显然枚举只能实现接口。或者是创建具有静态(最终)String属性的类的唯一解决方案?

编辑:谢谢大家,似乎我不确定何时使用枚举,何时不使用枚举,因为我只有一个属性(String),我甚至不需要对这些属性进行限制或比较枚举对象,我将使用具有静态最终字符串属性的类;)。

2 个答案:

答案 0 :(得分:0)

您可以使用以下内容:

  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);
 }
}

最初取自here

答案 1 :(得分:-1)

您可以覆盖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()