Java的Enum类型

没注意到一直以为java的enum只是简单的数字表示跟C一样,

没想到可以和类一样

转载:http://wosyingjun.iteye.com/blog/1895381

------------------------------------------------------------------------------------------------------

1、enum的遍历和基本方法

 
package yingjun.enumeration;

enum Shrubbery { GROUND, CRAWLING, HANGING }

public class EnumClass {
  public static void main(String[] args) {
	//调用enum的value()方法可以遍历enum实例
    for(Shrubbery s : Shrubbery.values()) {
      System.out.println(s + " ordinal: " + s.ordinal()); //返回enum实例的次序
      System.out.println(s.compareTo(Shrubbery.CRAWLING) + " ");//比较
      System.out.println(s.equals(Shrubbery.CRAWLING) + " ");//比较
      System.out.println(s == Shrubbery.CRAWLING);//比较
      System.out.println(s.getDeclaringClass());//获取所属类
      System.out.println(s.name());//获取相应的enum实例 和toString()方法效果相同
      System.out.println("----------------------");
    }
    // 通过字符生成枚举类型
    for(String s : "HANGING CRAWLING GROUND".split(" ")) {
      Shrubbery shrub = Enum.valueOf(Shrubbery.class, s);
      System.out.println(shrub);
    }
  }
} 
 
GROUND ordinal: 0
-1 
false 
false
class yingjun.enumeration.Shrubbery
GROUND
----------------------
CRAWLING ordinal: 1
0 
true 
true
class yingjun.enumeration.Shrubbery
CRAWLING
----------------------
HANGING ordinal: 2
1 
false 
false
class yingjun.enumeration.Shrubbery
HANGING
----------------------
HANGING
CRAWLING
GROUND

  2、向enum中添加自己的方法

 
package yingjun.enumeration;

public enum OzWitch {
  //构建实例的通同时添加自身的描述
  WEST("Miss Gulch, aka the Wicked Witch of the West"),
  NORTH("Glinda, the Good Witch of the North"),
  EAST("Wicked Witch of the East, wearer of the Ruby " +"Slippers, crushed by Dorothy's house"),
  SOUTH("Good by inference, but missing");
  private String description;
  
  private OzWitch(String description) {
    this.description = description;
  }
  
  public String getDescription() { return description; }
  public static void main(String[] args) {
    for(OzWitch witch : OzWitch.values())
      System.out.println(witch + ": " + witch.getDescription());
  }
}

 

 
WEST: Miss Gulch, aka the Wicked Witch of the West
NORTH: Glinda, the Good Witch of the North
EAST: Wicked Witch of the East, wearer of the Ruby Slippers, crushed by Dorothy's house
SOUTH: Good by inference, but missing

  3、重写enum的toString()方法

 

//重写toString()方法
public enum SpaceShip {
  SCOUT, CARGO, TRANSPORT, CRUISER, BATTLESHIP, MOTHERSHIP;
  public String toString() {
    String newname = name();
    String lower = newname.substring(1).toLowerCase();
    return newname.charAt(0) + lower;
  }
  public static void main(String[] args) {
    for(SpaceShip s : values()) {
      System.out.println(s);
    }
  }
}

 

 
Scout
Cargo
Transport
Cruiser
Battleship
Mothership

   4、switch语句中的enum

 

package yingjun.enumeration;

enum Signal { GREEN, YELLOW, RED, }

public class TrafficLight {
  Signal color = Signal.RED;
 
  public String toString() {
    return "The traffic light is " + color;
  }
  public void change() {
		//编译器自动调用ordinal()产生整数的次序
	    switch(color) {
	      case RED:    color = Signal.GREEN;
	                   break;
	      case GREEN:  color = Signal.YELLOW;
	                   break;
	      case YELLOW: color = Signal.RED;
	                   break;
	    }
	  }
  public static void main(String[] args) {
    TrafficLight t = new TrafficLight();
    for(int i = 0; i < 7; i++) {
      System.out.println(t);
      t.change();
    }
  }
}

   

The traffic light is RED
The traffic light is GREEN
The traffic light is YELLOW
The traffic light is RED
The traffic light is GREEN
The traffic light is YELLOW
The traffic light is RED

    5、随机选取enum中的实例

   

package yingjun.enumeration;


import java.util.*;

public class Enums {
  private static Random rand = new Random(47);
  public static <T extends Enum<T>> T random(Class<T> ec) {
    return random(ec.getEnumConstants());
  }
  public static <T> T random(T[] values) {
    return values[rand.nextInt(values.length)];
  }
} 

 

package yingjun.enumeration;


enum Activity { SITTING, LYING, STANDING, HOPPING,
  RUNNING, DODGING, JUMPING, FALLING, FLYING }

public class RandomTest {
  public static void main(String[] args) {
    for(int i = 0; i < 20; i++)
      System.out.print(Enums.random(Activity.class) + "\n");
  }
} 

 

Result代码 复制代码  收藏代码
  1. STANDING  
  2. FLYING  
  3. RUNNING  
  4. STANDING  
  5. RUNNING  
  6. STANDING  
  7. LYING  
  8. DODGING  
  9. SITTING  
  10. RUNNING  
  11. HOPPING  
  12. HOPPING  
  13. HOPPING  
  14. RUNNING  
  15. STANDING  
  16. LYING  
  17. FALLING  
  18. RUNNING  
  19. FLYING  
  20. LYING  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Javaenum类型是一种特殊的类型,它可以用来定义一组有限的常量。enum类型Java语言中的一个关键字,可以用来定义枚举类型。每个enum常量都是enum类型的一个实例。enum类型可以用来定义枚举类型,例如月份、星期、颜色等。 例如: ``` enum Season { SPRING, SUMMER, FALL, WINTER } ``` 上面代码定义了一个枚举类型Season,它有4个枚举常量:SPRING、SUMMER、FALL和WINTER。 enum类型也可以带有构造函数和方法,带有构造函数和方法的enum类型需要利用关键字enum定义 ``` enum Color { RED("红色", 1), GREEN("绿色", 2), BLUE("蓝色", 3); private String name; private int index; private Color(String name, int index) { this.name = name; this.index = index; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } } ``` 上面代码定义了一个枚举类型Color,它有3个枚举常量:RED、GREEN和BLUE。带有构造函数和方法的enum类型可以更方便的存储和获取枚举常量的信息。 总结:Javaenum类型是一种特殊的类型,它可以用来定义一组有限的常量,可以避免使用常 ### 回答2: Java中的enum类型是一种特殊的数据类型,它用于定义一组常量。常量是指在程序运行期间不会改变的值。枚举类型可以以更简洁和可读性好的方式来表示一组相关常量。 枚举类型Java中由关键字enum来定义,它能够包含一个或多个枚举常量。每个枚举常量都拥有自己的名称和值。我们可以通过枚举常量的名称来引用它们,并且无法对枚举常量进行更改。 枚举类型可以具有方法、构造函数和字段,就像普通的Java类一样。使用enum定义的枚举类型默认继承自java.lang.Enum类。此外,枚举类型还可以实现接口,从而使枚举常量能够具备更多的行为。 枚举类型Java中的应用非常广泛,它主要用于定义一组固定的常量,例如季节、星期几、颜色等。我们可以通过enum类型提供的方法来遍历枚举常量,比如values()方法可以返回枚举类型的所有常量,valueOf()方法可以根据常量名获取枚举常量。 使用枚举类型有许多好处,它可以提供更好的类型安全性,避免了使用原始类型常量的麻烦。此外,枚举类型在编码过程中也可以增加可读性,并且它们的实例是线程安全的。 总之,Java中的enum类型是一种非常有用的特性,它提供了一种更好的方式来定义和使用常量。通过使用enum类型,我们可以让代码更具可读性和可维护性。 ### 回答3: Javaenum类型是一种特殊的数据类型,用于定义一组常量。枚举类型可以认为是一个固定值的集合,比如一周的天数或是一年的季节。 在Java中,使用关键字enum来定义一个枚举类型。枚举类型中的每个常量都是唯一且有固定值的,它们可以通过枚举类型的名称来访问。 枚举类型的定义方式如下: enum Season { SPRING, SUMMER, AUTUMN, WINTER } 在上面的代码中,定义了一个名为Season的枚举类型,其中包含了四个常量:SPRING、SUMMER、AUTUMN和WINTER。 枚举类型可以用于switch语句中,让代码更加简洁和易读。例如: Season season = Season.SUMMER; switch (season) { case SPRING: System.out.println("春天"); break; case SUMMER: System.out.println("夏天"); break; case AUTUMN: System.out.println("秋天"); break; case WINTER: System.out.println("冬天"); break; } 除了常量之外,枚举类型还可以有构造方法、成员变量和成员方法。可以通过修改枚举类型的构造方法来给每个常量赋予不同的属性。 总之,Javaenum类型是一种方便、灵活且易于使用的数据类型,适用于定义一组固定值的常量。通过使用枚举类型,可以提高代码的可读性和可维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值