enum

一、enum概述。

    Java 代码的两个基本的构造块是类和接口。现在 Tiger 又引入了枚举,一般简称它为 enum。这个新类型允许您表示特定的数据点,这些数据点只接受分配时预先定义的值集合。 当然,熟练的程序员可以用静态常量实现这项功能。如:

  1. public class OldGrade {  
  2.  
  3. public static final int A = 1;  
  4. public static final int B = 2;  
  5. public static final int C = 3;  
  6. public static final int D = 4;  
  7. public static final int F = 5;  
  8. public static final int INCOMPLETE = 6;  

     但是, 这类常量是 Java 中 int 类型的常量,这意味着该方法可以接受任何 int 类型的值,即使它和OldGrade 中定的所有级别都不对应。因此,您需要检测上界和下界,在出现无效值的时候,可能还要包含一个 IllegalArgumentException。而且,如果后来又添加另外一个级别(例如OldGrade.WITHDREW_PASSING),那么必须改变所有代码中的上界,才能接受这个新值。

 

二、实例。

1、Color 类。

package enums;

public enum Color {
 RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0);
 
 private Color(int rv,int gv,int bv){
  this.redValue=rv;
  this.greenValue=gv;
  this.blueValue=bv;
 }
 
 public String toString(){ //自定义的public方法
    return super.toString()+"("+redValue+","+greenValue+","+blueValue+")";
 }
 public void doSomethint(){
  switch(this){
   case RED:System.out.println("red...........");break;
   case BLUE:System.out.println("blue...........");break;
   case BLACK:System.out.println("black...........");break;
   case YELLOW:System.out.println("yellow...........");break;
   default:System.out.println("end...........");
  }
 }

    private int redValue;

    private int greenValue;

    private int blueValue;
}

 

2、Client类。
package enums;

import java.util.EnumMap;

public class Client {
 public static void main(String[] args){
  Color red = Color.valueOf("RED");
  System.out.println(red);
  Color[] colors = Color.values();
  for(int i = 0;i<colors.length;i++){
   System.out.println(colors[i]);
  }
  System.out.println("比较:"+red.compareTo(Color.YELLOW));
  System.out.println("name:"+red.name());
  System.out.println("位置:"+red.ordinal());
  red.doSomethint();
  System.out.println("");
  System.out.println("");
  System.out.println("EnumMap............");
  EnumMap Colormap = new EnumMap(Color.class);
  Colormap.put(Color.RED, "RED..........");
  Colormap.put(Color.BLACK, "RED..........");
  Colormap.put(Color.BLUE, "RED..........");
  Colormap.put(Color.YELLOW, "RED..........");
  Colormap.put(Color.GREEN, "RED..........");
     for (Color color : Color.values() ) { 
      System.out.println("color is:  " + color + ", massage is: " +  Colormap.get(color)); 
     } 
 }
}


3、结果。

RED(255,0,0)
RED(255,0,0)
BLUE(0,0,255)
BLACK(0,0,0)
YELLOW(255,255,0)
GREEN(0,255,0)
比较:-3
name:RED
位置:0
red...........


EnumMap............
color is:  RED(255,0,0), massage is: RED..........
color is:  BLUE(0,0,255), massage is: RED..........
color is:  BLACK(0,0,0), massage is: RED..........
color is:  YELLOW(255,255,0), massage is: RED..........
color is:  GREEN(0,255,0), massage is: RED..........

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值