java枚举

原创 2015年05月30日 13:17:18

1.为何使用枚举

          (1)实际变成中,通常需要一些常量数据集,如周一到周日,性别等,通过枚举就可以表示

          (2)需要一些常量key-value集合,当然可以使用全局单例map,但是用枚举更好实现


2.枚举使用

          (1)简单定义常量集

public enum GenderEnum 
{
	man,women;
}
                  遍历所有常量

	@Test
	public void test() {
		for(GenderEnum ge: GenderEnum.values())
			System.out.println(ge);
	}
               结果为:

man
women
           可以看出,其中每一个常量都是GenderEnum类型的(不然循环不可能取出GenderEnum),所以可以将其中的man、women看做是GenderEnum的实例
           这么来想的话,是不是可以写个构造方法,或者说添加属性,这样的话,每个常量就有了自己的属性。如果是一个属性,不就实现了map的作用吗?

           而jdk枚举已经提供了支持

          (2)添加构造方法和属性

public enum GenderEnum 
{
	man("peter"),women("lisa");

	//成员变量
	private String value;
	
	//构造函数
	private GenderEnum(String value) 
	{
		this.value = value;
	}
	
	//getter
	public String getValue()
	{
		return value;
	}
}
            测试:

	@Test
	public void test() {
		
		for(GenderEnum ge: GenderEnum.values())
			System.out.println(ge.getValue());
	}
             结果为:

peter
lisa

        这么来看,枚举也就看做一个普通的类,常量只是当前类的对象而已。


3.原理

          使用javap命令反编译可以看出:

                  

           实际上就是和我们猜想的一样,常量man、women都是本类的实例而已

JAVA 枚举使用详解

问题引入:如何限制用户输入class Student{ private String name; // 考试等级 private String grade; //等级只能是AB...
  • guanhang89
  • guanhang89
  • 2016年08月20日 18:41
  • 2047

c# 入门级Java对比 5 —— 结构、枚举

一。特点 1. 结构为值类型,不能为null,只在栈中存储数据。 2. 结构隐式密封。 3. 结构赋值为把一个结构的值赋值给另一个结构,不像引用类型。 4. 可以有构造函数,静态构造函数,但不...
  • csleenng
  • csleenng
  • 2016年08月25日 17:18
  • 280

Java基础之枚举妙用

对于枚举,初学Java的时候可能我们就已经接触过了,但是在毕业前,其实一直都不知道真正工作里面枚举是怎么用的,枚举有什么用?接下来,博主就介绍枚举在实际工作中的一种使用场景,本文只适合初级的小菜鸟看哈...
  • u013142781
  • u013142781
  • 2016年01月06日 19:00
  • 4073

Java 枚举:switch 支持枚举

JDK1.5 才开始有枚举类型,同时可爱的 Java 组织丰富了 switch 语句:支持枚举。 定义一个枚举类 Color public enum Color { RED("re...
  • AndroidBluetooth
  • AndroidBluetooth
  • 2012年09月05日 18:04
  • 11364

java枚举的实际应用案例

java枚举知识点来自jdk5.0的版本带来的新特性,下面讲解的内容分别是:  1.枚举类型    2.枚举中的参数、方法    3.遍历 在实际中对于一些基本固定的值用枚举比较好,当然...
  • fengchao2016
  • fengchao2016
  • 2016年10月08日 14:32
  • 2818

java推荐使用枚举定义常量

假如有一笔业务需要审核,审核状态分:未审核,审核中,审核通过,审核不通过。我们在程序里是否可以直接这么写: if(state==1){//1代表未操作 //操作 }else{ //...... } 将...
  • scandly_java
  • scandly_java
  • 2016年06月15日 16:36
  • 16260

Java 使用 switch 语句和枚举类型

switch可以与枚举类型搭配使用,从JDK 7开始可以针对字符串使用switch条件语句
  • shuiCSDN
  • shuiCSDN
  • 2017年05月15日 22:48
  • 353

Java 枚举String字串

终于写完了腾讯优图的代码。这也源于项目中的一个小问题:如何保存一系列的字符串,并且还能访问方便。在我之前的认知中,Enum类型可以很好保存整型并且方便访问,因为对Java不是特别熟,于是google了...
  • zhangxiao93
  • zhangxiao93
  • 2015年12月07日 09:36
  • 7629

Java枚举 —— 很少被使用,或许是因为真正了解它的人太少了

你代码中的flag和status,都应该用枚举Enum来替代
  • hzy38324
  • hzy38324
  • 2017年05月21日 16:40
  • 2799

使用枚举规范方法命名

枚举类: public enum UserOptionEnum {     SAVE_USER,     DELETE_USER,     GET_USER_BY_ID } 规范方法命名...
  • crystalddd
  • crystalddd
  • 2014年12月10日 13:17
  • 5704
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java枚举
举报原因:
原因补充:

(最多只允许输入30个字)