当前位置: 首页 > 面试题库 >

在Java枚举上实现toString

南宫勇军
2023-03-14
问题内容

在Java中似乎可以编写如下代码

 private enum TrafficLight {
  RED,
  GREEN;

  public String toString() {
   return //what should I return here if I want to return
                               //"abc" when red and "def" when green?
  }
 }

现在,我想知道枚举的值为红色时是否可以在toString方法中返回“ abc”,绿色的时​​候可以返回“ def”。另外,是否可以在C#中做类似的事情?

 private enum TrafficLight {
  RED = 0,
  GREEN = 15
  ...
 }

我已经尝试过了,但是却遇到了编译器错误。

谢谢


问题答案:
enum TrafficLight {
  RED,
  GREEN;

  @Override
  public String toString() {
    switch(this) {
      case RED: return "abc";
      case GREEN: return "def";
      default: throw new IllegalArgumentException();
    }
  }
}

回答2:

enum TrafficLight {
  RED(0),
  GREEN(15);

  int value;
  TrafficLight(int value) { this.value = value; }
}


 类似资料:
  • 问题内容: 我已经读过,可以使用以下方式在Java中实现: 但是,以上内容如何运作?具体来说,必须实例化an 。在这里,如何实例化?谁在做什么? 问题答案: 这个, 有一个隐式的空构造函数。相反,让它明确 如果你随后使用类似的方法添加了另一个类 你会看到 字段是编译时间常数,但它们是其类型的实例。并且,它们是在首次引用枚举类型时构造的。

  • 我试图在Enum上做一点反向工程。 接口内的枚举实现-Java

  • 问题内容: 我维护着一个大型文档档案,并且在处理或验证它们时经常使用位字段来记录文档的状态。我的旧代码仅使用静态int常量,例如: 通过设置适当的标志,可以很容易地指示文档所处的状态。例如: 由于使用静态常量的方法是不好的做法,并且由于我想改进代码,因此我一直希望使用Enums来实现相同的目的。有一些要求,其中之一就是需要将状态作为数字类型保存到数据库中。因此,需要将枚举常量转换为数值。以下是我的

  • 问题内容: 我有一个关于在接口中放置Java枚举的问题。为了使其更清楚,请参见以下代码: 我知道一个接口由带有 空主体 的方法组成。但是,我在这里使用的枚举需要一个构造函数和一个方法来获取关联的值。在此示例中,建议的接口将不仅包含空主体的方法。是否允许这种实现? 我不确定是否应该将枚举类放入接口或实现此接口的类中。 如果将枚举放入实现此接口的类中,则方法public Number getNumbe

  • 我有一个关于在接口中放置Java枚举的问题。为了更清楚,请看下面的代码: 我知道一个接口由带有空主体的方法组成。但是,我在这里使用的枚举需要一个构造函数和一个方法来获取关联的值。在本例中,所建议的接口将不仅仅由具有空主体的方法组成。允许这种实现吗?

  • 问题内容: 在Java中,您可以创建一个枚举,如下所示: public enum Letter { A, B, C, D, E, F, G; } 这个问题涉及“ values()”方法。具体来说,如何实施?通常,我可以在Eclipse中使用F3或CTRL + Click跳到Java类的源代码(甚至对于String,Character,Integer甚至Enum之类的类)。可以查看其他枚举方法的源(