枚举类的一些自己的理解

通过观看张老师对枚举类的讲解,我字再查了一些课外书,归纳了以下一些关于枚举类的使用

,总的说来,枚举类主要用以限定一个类产生对象的个数。

枚举类中自己定义了一些方法,

比如

compareTo(E o)对象比较

equals(E o)判断是否相等

name() 获得枚举的名称

ordinal()返回枚举常量的序数

valueOf()方法找到一个枚举对象

在Enum类中已经实现了comparable接口,因此当你往一个集合类(如TreeSet)中加入枚举的对象后再进行输出,可以发现,他可能和你加入时的顺序不同了.

jdk1.5之后,类集中的EnumSet和EnumMap支持了枚举的操作,枚举可以限定自己的对象个数,但是在输出时,枚举采用的是values()方法将全部的对象输出,这样的方式貌似不是很灵活。有了类集的支持,就可以把枚举的中的对象移到类集中,再通过类集的get()方法进行有选择性的输入,这样会显得更加灵活。

package cn.yangtao.enumdemo;
public class EnumTest {

 /**
  * @param args
  */
 /**
  * 最普通的枚举
  */
 public enum ColorSelect{
  red,green,yellow,blue;
 }
 /**
  * 枚举也可以像一般的类一样添加方法和属性,你可以为它添加静态或者非静态
  * 的属性或方法,就像在一般类中做的那样,通过枚举的对象元素来调用
  * @param args
  */
 public enum Season{
  //枚举列表必须写在最前面,否则编译出错
  winter,spring,summer,fall;
  private final static String location="Phoenix";
  public static Season getBest(){
    if(location.equals("Phoenix")){
     return winter;
   }
    else{
     return summer;
   }
  }
  /*
   * 还可以给枚举添加构造方法
   *
   */
 }
  public enum Temp{
   /*
    * 通过括号赋值,而且必须有带参构造器和一属性跟方法
    * 否则编译出错
    * 赋值必须都赋值或都不赋值
    * 如果不赋值则不能写构造器,赋值编译也出错
    */
   absoluteZero(-459),freezing(32),boiling(212),paperburns(451);
   private final int value;
   public int getValue(){
    return value;
   }
   //构造器默认也只能是private,从而保证构造函数只能在内部使用
   Temp(int value){
    this.value=value;
   }
  }
  /*
   * 通过匿名类来实现抽象方法
   * 每一个对象可以看成是hello的子类的对象
   */
  public enum Hello{
   zhangsan{
    public void say(){
     System.out.println("我是张三");
    }
   },
   wangwu{
    public void say(){
     System.out.println("我是王五");
    }
   },
   lisi{
    public void say(){
     System.out.println("我是李四");
    }
   };
   public abstract void say();
  }

 public static void main(String[] args) {
  // TODO Auto-generated method stub
  /*
   * 枚举类型是一种类型,用于定义变量,以限制变量的赋值
   * 赋值时通过“枚举名.值”来取得相关枚举中的值
   */
  ColorSelect m=ColorSelect.blue;
  switch(m){
  /*
   * 枚举重写了ToString(),所以枚举变量的值是不带前缀的
   * 所以m为blue而非ColorSelect.blue
   */
  case blue:
   System.out.println("蓝颜色");
   break;
  case red:
   System.out.println("红颜色");
   break;
  case green:
   System.out.println("绿颜色");
   break;
  case yellow:
   System.out.println("黄颜色");
   break;
  default :
   System.out.println("输入有误");
  }
  //通过Season枚举类的对象winter调用其中的方法
  System.out.println(Season.winter.getBest());
  //通过Temp枚举类的对象freezing调用方法
  System.out.println(Temp.freezing.getValue());
  //通过hello枚举类的对象zhangsan来调用方法
  Hello.zhangsan.say(); 
 }
}

老婆要求加的链接>>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值