java-枚举基础入门

1 篇文章 0 订阅

枚举入门

枚举是jdk1.5引入的新特性,可以通过关键字enum来定义枚举类.

枚举类时一种特殊的类.他和普通类一样可以使用构造器,定义成员变量和方法,也能实现一个或者多个接口,但是枚举类不能继承其他类.

public enum Color{// 表示这是一个枚举类型,名字叫Color
    BLACK,WHITE// 表示这个枚举类型有两个固定的对象,一个叫BLACK,一个叫WHITE
}

枚举类型重写了toString方法,返回枚举对象的名字.

在这里插入图片描述

反编译枚举类,从结果中可以看出:

  • 枚举也是一种类,同时韩式一个final修饰的类

  • 枚举类型都会默认继承一个父类型java.lang.Enum,这还是一个抽象的泛型类

    public abstract class Enum<E extend Enum<E>>{}
    
  • 枚举中所定义的对象,其实就是类里面的public static final 修饰的常量,并且这些常量会在静态代码块中做初始化

  • 枚举类型中海油一个默认的私有构造器,说明我们在外面并不能自己去创建枚举对象

  • 枚举类型中还有有默认添加进来的方法

    values() 方法,可以返回这个枚举类型的所有对象,返回类型是数组

    valueOf(String str) 方法,通过一个字符串可以返回枚举对象,这个字符串参数就是枚举对象的名字

  • 枚举类型会从父类中继承过来一些方法,例如

    String name() 返回这个枚举对象的名字

    int ordinal() 返回这个枚举对象的编号,默认从0开始

意义

当我们要使用的是固定个数的对象时可以使用枚举类型

例如: 性别,钱的类型等等

使用

获取枚举对象的方式

  1. 使用类名直接获取

    eg: Color c = Color.RED;

  2. 使用valueOf方法

    eg: Color.valueOf(“RED”)

  3. 使用反射

    Class c = Class.forName("com.briup.Color");
    Enum e = Enum.valueOf(c,"RED");
    

枚举中定义属性和方法

在枚举中,除了可以指定对象的个数和名称之外,还可以定义属性和方法

public enum Gender{
MALE,FEMALE;
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void test(){
System.out.println("Gender test...");
}
public static void print(String name){
System.out.println("hello "+name);
}
}

注意: 枚举类型中的第一行代码,要求一定时指定枚举对象的个数和名字,同时最后面加分号;

枚举中还可以定义自己的构造器

public enum Gender{
MALE,FEMALE;
private String name;
private Gender(){
}
private Gender(String name){
this.name = name;
}
@Override
public String toString() {
return "Gender{name="+name+"}";
}
}

枚举中的构造器,只能使用private修饰,或者不写修饰符,那么默认也是private,同时还可以构造器重载

枚举中可以定义抽象方法,但是需要在定义每个枚举对象时,将抽象方法进行实现,因为枚举类型是final修饰的类,不可能有子类型来实现这个抽象方法

枚举类型实现接口

枚举类型已经有默认的父类型,我们就不能让它在继承其他父类了,但是我们可以让枚举类型实现指定的接口

public enum Gender implements Action{
MALE,FEMALE;
    @Override
public void run() {
System.out.println("枚举中统一实现接口中的抽象方法");
}
}
interface Action{
void run();
}

我们在枚举中实现方法时有两种,一种直接在枚举中统一实现,一种在每个对象中,分别实现

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值