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注意事项:

 

posted @ 2016-09-07 23:14  黑土白云  阅读(174)  评论(0编辑  收藏  举报