在Java枚举上实现toString [英] Implementing toString on Java enums

查看:442
本文介绍了在Java枚举上实现toString的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

 私有枚举TrafficLight {
RED,
绿色;

public String toString(){
return //如果我想要返回
//abc,当红色和def为绿色时该怎么办?
}
}

现在,我想知道是否可能当枚举的值为红色时返回toString方法abc,当它为绿色时返回def。另外,是否可以像C#那样做,你可以在这里做什么?:

 私有枚举TrafficLight {
RED = 0,
GREEN = 15
...
}

我已经尝试了这个,但是我正在收到编译器错误。



谢谢

解决方案

Ans 1:



 枚举TrafficLight {
RED,
绿色;

@Override
public String toString(){
switch(this){
case RED:returnabc;
case GREEN:returndef;
default:throw new IllegalArgumentException();
}
}
}



Ans 2:



 枚举TrafficLight {
RED(0),
GREEN(15);

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


It seems to be possible in Java to write something like this:

 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?
  }
 }

Now, I'd like to know if it possible to returnin the toString method "abc" when the enum's value is red and "def" when it's green. Also, is it possible to do like in C#, where you can do this?:

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

I've tried this but it but I'm getting compiler errors with it.

Thanks

解决方案

Ans 1:

enum TrafficLight {
  RED,
  GREEN;

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

Ans 2:

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

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

这篇关于在Java枚举上实现toString的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆