性别枚举有多少种
Java中的枚举类型,从表现形式上来看,好像就是一个类,而其中含有几个static的变量,并且由于它的构造方法是私有的,所有在类的外部不能构造新的对象。先来看看以下代码.
按需求的来说,性别的取值就是“男”、“女”,但我觉得写得这么死不太好,如果哪天客户说要增加一个新的性别选择,那又要改源代码,那还是要添加进来。因此,基于可扩展性的考虑,我写出了以下的枚举类型。
枚举类型在使用上还是有不少好处的,如果按不是的话,对于新手来说,我们可能使用字符串“0”、“1”...或者一些有意义的字符串如“MALE","FEMAL","M","F"等等来代替参数,但这样如果使用的人多了,就比较难协调一致了,因此如果大家都只使用枚举类里指定的几种类型,而且很方便的获得它的中文别名,是不是感觉良好呢。
package test;
/**
* 性别类型,包括男、女、其他
*
* @author Keengle 2009-12-31
*
*/
public enum SexType {
/**
* 男
*/
S_MALE("男"),
/**
* 女
*/
S_FEMALE("女"),
/**
* 其他
*/
S_OTHER("其他");
private SexType(String alias) {
this.alias = alias;
}
private String alias;
/**
* 判断枚举是否在所列的枚举值中
*
* @param flag
* @return
*/
public boolean in(SexType... flag) {
Assert.notNull(flag, "必须至少存在一个枚举值");
for (int i = 0; i < flag.length; i++) {
if (this == flag[i]) {
return true;
}
}
return false;
}
public String getAlias() {
return alias;
}
public String getSexAlias() {
return alias;
}
}
对于上面的这个例子,如果我们enum改为class,再把其中的3个枚举实例加个public static来限定,在使用方面是不是跟原来的enum一样啦。因为其构造方法是私有的,所有在类的外面是不能再创建新的对象,只能继续使用这原有的类实例了。
最新评论