Enum

    当定义一个枚举类型时,每一个枚举类型成员都可以看作是枚举类型的一个实例,这些枚举类型成员都默认被final、public、static修饰,所以当使用枚举类型成员时直接使用枚举类型名称调用枚举类型成员即可。

枚举类型的常用方法
方法名称具体含义使用方法举例
values()该方法可以将枚举类型成员以数组的形式返回枚举类型名称.values()Constants.values()
valueOf()该方法可以实现将普通字符串转换为枚举实例枚举类型名称.valueOf("abc")Constants.valueOf("abc")
compareTo()该方法用于比较两个枚举对象在定义时的顺序枚举对象.compareTo()Constants_A.compareTo(Constants_B)
ordinal()该方法用于得到枚举成员的位置索引枚举对象.ordinal()Constants_A.ordinal()

    values():将枚举类型的成员变量实例以数组的形式返回,也可通过该方法获取枚举类型的成员。

public class ShowEnum{
  enum Constants2{
    Constants_A,Constants_B
}
  public static void main(String[] args){
    for(int i=0;i<Constants2.values().length;i++){
      System.out.println("枚举类型成员变量:"+Constants2.values()[i]);
    }
  }
}

    valueOf():将普通字符串转换为枚举类型

    compareTo():比较两个枚举类型对象定义时的顺序

public class EnumMethodTest{
  enum Constants2{
    Constants_A,Constants_B
  }
  public static void compare(Constants2 c){
    for(int i=0;i<Constants2.values().length;i++){
       System.out.println(c+"与"+Constants2.values()[i]+"的比较结果为:"+c.compareTo(Constants2.values()[i]));
    }
  }
  public static void main(String[] args){
    compare(Constants2.valuesOf("Constants_B"));
  }
}

    调用compareTo()方法返回的结果,正值代表方法中参数在调用该方法的枚举对象位置之前;0代表两个互相比较的枚举成员的位置相同;负值代表方法中参数在调用该方法的枚举对象位置之后。

    ordinal()方法用于获取某个枚举对象的位置索引值

在枚举类型中,可添加构造方法,但规定这个构造方法必须为private修饰符所修饰

public class EnumIndexTest{
  enum Constants2{
    Constants_A("我是枚举成员A"),
    Constants_B("我是枚举成员B"),
    Constants_C("我是枚举成员C"),
    Constants_D(3);
    private String description;
    private int i=4;
    private Constants2(){
    }
    private Constants2(String description){
      this.description=description;
    }
    private Constants2(int i){
      this.i=i;
    }
    public String getDescription(){
      return description;
    }
    public int getI(){
      return i;
    }
  }
  public static void main(String[] args){
    for(int i=0;i<Constants2.values().length;i++){
      System.out.println(Constants2.values()[i]+"调用getDescription()方法为:"+Constants2.values()[i].getDescription());
    }
    System.out.println(Constants2.valueOf("Constants_D")+"调用getI()方法为:"+Constants2.valueOf("Constants_D").getI());
  }
}

    除可以使用上例中所示的方法定义getDescription()方法获取枚举类型成员定义时的描述之外,还可以将这个getDescription()方法放置在接口中,使枚举类型实现该接口,然后使每个枚举类型实现接口中的方法。

interface d{
  public String getDescription();
  public int getI();
}
public enum AnyEnum implements d{
  Constants_A{// 可以在枚举类型成员内部设置方法
    public String getDescription(){
      return("我是枚举成员A");
    }
    public int getI(){
      return i;
    }
  },
  Constants_B{
    public String getDescription(){
      return("我是枚举成员B");
    }
    public int getI(){
      return i;
    }
  },
  Constants_C{
    public String getDescription(){
      return("我是枚举成员C");
    }
    public int getI(){
      return i;
    }
  },
  Constants_D{
    public String getDescription(){
      return("我是枚举成员D");
    }
    public int getI(){
      return i;
    }
  };
  private static int i=5;
  public static void main(String[] args){
    for(int i=0;i<AnyEnum.values().length;i++){
      System.out.println(AnyEnum.values()[i]+"调用getDescription()方法为:"+AnyEnum.values()[i].getDescription());
      System.out.println(AnyEnum.values()[i]+"调用getI()方法为:"+AnyEnum.values()[i].getI());
    }
  }
}

    枚举类型声明提供了一种用户友好的变量定义方法,枚举了某种数据类型所有可能出现的值。

    特点:1.类型安全。

              2.紧凑有效的数据定义。

              3.可以和程序其他部分完美交互。

              4.运行效率高。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值