欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java编程枚举类型那些事!枚举类型定义和重写枚举的方法

程序员文章站 2024-02-21 20:32:28
什么是枚举类型 枚举类型(enumerated type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。 而这种枚举类型的名称则会被定义成...

什么是枚举类型

枚举类型(enumerated type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中。

而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常量的定义相似。不过相比较常量类型,枚举类型可以为申明的变量提供更大的取值范围。

简单的枚举类型定义

假如你希望创建一个颜色库,你可以这样定义枚举类型

enum color {red, green, yellow, black};

然后你就可以使用它

color t = color.red;
if (t == color.red)
  system.out.println("i am red");
switch(t) {
 case red:
   system.out.println("i am red");
   break
}

定制枚举类型

在c/c++中,我们可以这样使用枚举变量

enum color {red,green};
enum color a = 1;// a is green

在java中定义枚举类型的值

enum color {
 red(1),green(2);
 private final int number;
 color(int i) {
  this.number = i;
 }
 public getvalue() {
  return this.number;
 }
}

然后使用 t.getvalue() 便可获取绑定的值

重写枚举的方法

枚举类给我们提供的方法有,具体可以查看enum.java

name, tostring, valueof //获取名字
equals //比较
ordinal //获取位置

实现接口

所有的枚举都继承自java.lang.enum类。

由于java 不支持多继承,所以枚举对象不能再继承其他类,但是可以实现接口

test

enum number {
  zero(0),one(1),two(2);
  int n;
  number(int i) {
    this.n = i;
  }
  public int getvalue(){
    return this.n;
  }
}
interface people_state {
  string getstate();
  state_enum changestate();
}
enum state_enum implements people_state {
  normal("正常"), stop("停止");
  private final string state;
  state_enum(string s) {
    this.state = s;
  }
  public string tostring() {
    return state;
  }
  @override
  public string getstate() {
    return state;
  }
  @override
  public state_enum changestate() {
    if (this == normal)
      return stop;
    else
      return normal;
  }
}
public class test_enum {
  public static void main(string[] args) {
    number z = number.zero;
    state_enum state = state_enum.normal;
    system.out.println(z.getvalue());
    system.out.println(z);
    system.out.println(number.one);
    switch (z) {
      case zero:
        system.out.println(0);
        break;
      case one:
        system.out.println(1);
        break;
      case two:
        system.out.println("2");
        break;
    }
    //equals
    if (z.equals(number.one)) {
      system.out.println("equal!");
    } else {
      system.out.println("unequal");
    }
    //valueof
    system.out.println(number.valueof("zero"));
    //ordinal
    system.out.println(z.ordinal()); //the index of values
    system.out.println(state.tostring());
    state = state.changestate();
    system.out.println(state.getstate());
  }
}

output

0
zero
one
0
unequal
zero
0
正常
停止

总结

以上就是本文关于java编程枚举类型定义和重写枚举的方法的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:java编程long数据类型的使用问题、等,有什么问题可以随时留言,小编会及时回复大家的。感谢朋友们对本站的支持!