软件编程
位置:首页>> 软件编程>> java编程>> java编程枚举类型那些事!枚举类型定义和重写枚举的方法

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

作者:i_belive_my_love的博客  发布时间:2021-11-19 18:31:15 

标签:java,枚举

什么是枚举类型

枚举类型(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
正常
停止

来源:https://www.2cto.com/kf/201710/691685.html

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com