java 枚举类

2 篇文章 0 订阅
1 篇文章 0 订阅

java枚举

   枚举是是jdk 1.5提供的。在提到枚举类之前,先假设一个对象中具有一个gender成员变量。那我们可以通过char来定义。但是一样的方式也有他的弊端。因为我们在设置性别的时候是可以放入任何char型的数据的。虽然我们可以使用setter方法来控制用户的输入合法性但是枚举类提供了更方便的方法。

在jdk1.5之前是没有枚举类的。那么我们先看一看自定义枚举类是怎么做的。

class User{
	private String name;
	private Gender gender;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	
}

这是一个User的实体类,他有名字和性别这两个成员属性。而gender是一个自定义的枚举类。下面展示自定义枚举类的代码

class Gender{
	private String name;
	public static final Gender BOY=new Gender("男");
	public static final Gender GIRL=new Gender("女");
	
	private Gender(String name) {
		super();
		this.name = name;
	}
	public String getName() {
		return name;
	}
	
	@Override
	public String toString() {
		return "Gender [name=" + name + "]";
	}
	
}

. 自定义枚举类
             1. 将构造器私有化
             2. 对外暴露若干个静态对象
             3. 不允许外界对提供的对象进行修改,所以设置为final
             4. 对象的属性值也不能允许更改, 将set方法取消
             5. 对象名改为全大写 

这样的构造很像单例模式区别在于

         单例模式 :一个 类对外只提供一个对象
         枚举:    一个类对外提供有限个数的对象

接下来便是有jdk1.5提供的枚举类

enum Gender {
   BOY("男"), GIRL("女");
    private String name;
    public Gender(String sex){
        this.sex = sex;
    }
}

上面代码中BOY和GIRL两个对象其实是

    public static final Gender BOY=new Gender("男");
    public static final Gender GIRL=new Gender("女");

枚举对象对其上进行了简化。

二 、 枚举类的语法和常用方法:

1. enum创建枚举类
         语法:  enum 类名{
             对象名(参数列表),对象名(参数列表)...;
             属性
             get方法
             构造器
         }
     
     2. 特点:
         a. 采用enum修饰的类默认就是枚举类,构造器默认是私有的
         b. 枚举类第一行必须是对象的创建
             只需要写对象名就可以,如果是多个用逗号隔开,如果需要调用有参构造器,需要添加括号传参
             BOY("男"),GIRL("女");
         c. 显示的创建构造器,必须是私有的
         d. 采用enum创建的类默认父类是Enum
     
     3. Enum的常用方法  
             toString()   返回对象的对象名
             name()   返回对象的对象名   不能被重写   
             ordinal()  返回对象的索引值   
             Gender1.values()   静态方法   返回当前枚举类对外提供的所有对象
             Gender1.valueOf("BOY")  静态方法   根据字符串返回和字符串相同名称的对象      
     4. 枚举类去实现接口
             a. 和普通类去实现接口的方式一致
             b. 枚举类的对象可以对接口中的方法进行单独实现、重写
                 对象名(参数列表){抽象方法的实现}
                 BOY("男"){
                    public void fly(){
                        System.out.println("开心的飞走了");
                    }
                }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值