Enum

1.垃圾数据冗余,我们要求输错了就要给提示,而不是默认!

class Person{
    private String name;
    private String sex;
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        if ("man".equalsIgnoreCase(sex) || "woman".equalsIgnoreCase(sex)) {
            this.sex = sex;
        }else{
            this.sex = "man";
        }
    }

}

public class EnumTest {

    public static void main(String[] args) {
        Person p = new Person();
        p.setName("张三");
        p.setSex("人妖");
        System.out.println(p.getName()+"的性别是:"+p.getSex());//张三的性别是:man
    }
}

2.优化 抛出异常,但是是运行时异常,我们想要的是在编译的时候就给我们提示,所以还是要继续优化...

	public void setSex(String sex) {
		if ("man".equalsIgnoreCase(sex) || "woman".equalsIgnoreCase(sex)) {
			this.sex = sex;
		}else{
			throw new RuntimeException("性别不能乱输呀");
		}
	}

  

3.继续优化: Enum的雏形到来了

class Person{
	private String name;
	private Gender sex;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Gender getSex() {
		return sex;
	}
	public void setSex(Gender sex) {//接收Gender类型
		this.sex = sex ;
	}
}

class Gender{//Enum的爷爷
	String gender ;
	private Gender(String gender){this.gender = gender;}//构造器私有化,防止别人new 对象,随意改变数据!
	public static final Gender MAN = new Gender("man");
	public static final Gender WOMAN = new Gender("wowan");
}

public class EnumTest {
	public static void main(String[] args) {
		Person p = new Person();
		p.setName("张三");
		p.setSex(Gender.WOMAN);
		System.out.println(p.getName()+"的性别是:"+p.getSex().gender);//张三的性别是:wowan
	}
}

  4.Enum到来了!春天来了...

enum Gender{
	MAN("man"),WOWAN("woman"); //枚举值必须放置第一行
	String gender;
	private Gender(String gender){this.gender = gender;}
}

public class EnumTest {
	public static void main(String[] args) {
		Person p = new Person();
		p.setName("张三");
		p.setSex(Gender.MAN);
		System.out.println(p.getName()+"的性别是:"+p.getSex().gender);//张三的性别是:man
	}
}

  5.enum注意事项:

时间: 2024-10-16 11:41:54

Enum的相关文章

Android 开发 之 Enum (枚举) —— @IntDef的使用

官方文档说明,安卓开发应避免使用Enum(枚举类),因为相比于静态常量Enum会花费两倍以上的内存.参 http://developer.android.com/training/articles/memory.html#Overhead 那么如果需要使用Enum应该怎么做呢? https://noobcoderblog.wordpress.com/2015/04/12/java-enum-and-android-intdefstringdef-annotation/ public class

java技术系列(一) Enum

Enum的本质是类,继承自Enum类. enum直接使用==进行比较就可以. 类型的静态values方法,返回左右的枚举实例. ordinal方法返回enum声明中枚举常亮的位置. 适用场景:在实际编程中,存在稳定的有限数据集,如周一到周日,四季名称,男女性别等.适用于枚举. 可以在switch中使用. 1 package testjava; 2 3 import com.alibaba.fastjson.JSON; 4 5 /** 6 * Create with test01 7 * Auth

Rhythmk 一步一步学 JAVA (20) JAVA enum常用方法

JAVA 枚举定义常用方法: 1.static Enum valueOf(Class enum,String name) 返回指定name的枚举类型 2.Static Enum values[] 返回枚举常量集合 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50

enum类型

enum  标识符  {枚举符表} 枚举符表中的标识符声明为 int 类型的常量,他们可以用在常量可以出现的任何地方. 如果其中不包括带有 = 的枚举符,则常量值从0开始,且枚举常量从左到右依次递增1. 如果其中包括带有= 的枚举符,则该枚举符的值由该表达式指定,其后的标识符的值从该值开始依次递增 同一作用域中的哥枚举符必须互不相同,也不能与普通变量的命相同,但其值可以相同.

Java中的Enum的使用与分析

示例: public enum EnumTest { FRANK("The given name of me"), LIU("The family name of me"); private String context; private String getContext(){ return this.context; } private EnumTest(String context){ this.context = context; } public stat

ENUM 类型

ENUM 是一种枚举类型,枚举就是一一列举,在创建表的时候将所有的情况都列举出来,那么取值的时候只能是这几种情况的一种,不能是别的.每个枚举值均有一个索引值,索引值从1开始,如果是空字符串则索引值为0,如果是NULL则索引值为NULL,例子如下:

hibernate enum映射详解

hibernate enum映射详解 在这里介绍注解的形式,如果想要了解XML配置的方式,可以自行查找相关资料. 例如以下Entity @Entity @Table(name = "t_user") public class User implements Serializable { /** * */ private static final long serialVersionUID = -9042615274714038279L; @Id @GeneratedValue(stra

枚举Enum 的常用方法

一.枚举介绍 通常定义常量方法和枚举定义常量方法区别 public class State { public static final int ON = 1; public static final Int OFF= 0; } 第一.它不是类型安全的. 你必须确保是int,其次,你还要确保它的范围是0和1. 第二.不够直观. 很多时候你打印出来的时候,你只看到 1 和0 ,但其没有看到代码的人并不知道你的企图. 抛弃你所有旧的public static final常量 枚举是一种规范它规范了参数

enum 与 enum class

c++11中引入了新的枚举类型---->强制枚举类型 // unscoped enum: enum [identifier] [: type] {enum-list};  // scoped enum: enum [class|struct] [identifier] [: type] {enum-list}; 参数说明: identifier:指定给与枚举的类型名称. type:枚举器的基础类型(默认int),所有枚举器都具有相同的基础类型,可能是任何整型. enum-list:枚举中以逗号分

C语言学习笔记--enum和sizeof关键字

1.enum关键字 C语言中enum关键字用来定义枚举类型 (1)enum 是 C 语言中的一种自定义类型(2)enum 值是可以根据需要自定义的的整型值(3)第一个定义的 enum 值默认为 0 (4)默认情况下的 enum 值是在前一个定义值的基础上加 1 (5)enum 类型的变量只能取定义时的离散值 enum Color { GREEN, //默认 GREEN==0; RED= 2, //自定义 RED==2; BLUE //默认情况,是在前一个的基础上加 1,即 BLUE==3 };