Java-枚举类型

枚举类型
  • 枚举的定义,
enum 类名{
    枚举值...
}
  • 枚举值一般是大写字母,多个枚举值之间用逗号相隔,且枚举值默认的修饰符是public static final
  • 编译器会生成相应的类,该类是final 并继承自java.lang.Enum 抽象类。
  • 可以在枚举类型中添加一些构造器、方法(包括main)和域。构造器只是在构造枚举常量的时候被调用。但是必须在声明完枚举实例后使用分号分开。
  • 可以为枚举类型定义抽象方法,并在域中实现。此外我们可以覆盖Enum 抽象中的toString() 方法。
  • Enum抽象类方法:
方法描述
int ordinal()返回枚举常量在enum声明中的位置,位置从0开始
String toString()返回枚举常量名
String name()返回此枚举常量的名称
int compareTo(E other)如果枚举常量出现在other之前,则返回一个负值;如果this==other,则返回0;否则返回正值。枚举常量的出现次序可由ordinal() 获取。
static Enum valueOf(Class ,String )返回指定名字,给定类的枚举常量
import java.util.Arrays;
public class EnumTest{
    public static void main(String[] args){
        //String s="Small";
        Size sizeMed=Size.Medium;
        System.out.println("sizeMed is "+sizeMed);
        System.out.println("sizeMed.getAbbreviation() is "+sizeMed.getAbbreviation());

        Size sizeExtra_Large=Enum.valueOf(Size.class,"Extra_Large");//Enum抽象类方法,返回指定名称,给定枚举类的常量
        System.out.println("Enum.valueOf() is "+sizeExtra_Large);

        String medium=sizeMed.toString();//返回枚举常量名
        String medium1=sizeMed.name();//返回枚举常量的名称
        System.out.println("sizeMed.toString() is "+medium+"; medium1 is "+medium1);

        Size[] sizes=Size.values();//静态values()方法,编译器自动添加,返回一个包含全部枚举值的数组
        System.out.println("Size.values is "+Arrays.toString(sizes));

        int n=sizeMed.ordinal();//获取枚举变量在枚举类型中声明的次序,下标从0开始
        System.out.println("sizeMed.ordinal() is "+n);

        Size sizeLarge=Size.valueOf("Large"); //编译器自动添加,静态方法根据变量生成枚举变量
        sizeLarge.sayHello();
        System.out.println("Size.valueOf(String) is "+sizeLarge);
    }
    enum Size { //定义EnumTest类的内部,也可以定义外部
        Small("S"){
            @Override //实现定义的抽象方法
            public void sayHello() {
                System.out.println("Hello,i am Small");
            }
        }, Medium("M"){
            @Override
            public void sayHello() {
                System.out.println("Hello,i am Medium");
            }
        }, Large("L"){
            @Override
            public void sayHello() {
                System.out.println("Hello,i am Large");
            }
        }, Extra_Large("XL"){
            @Override
            public void sayHello() {
                System.out.println("Hello,i am Extra_Large");
            }
        };//括号中的字符串将传入构造器中
        private String abbreviation;

        private Size(String abbreviation) {//构造方法,Small("S")中的"S"将传入该方法中
            this.abbreviation=abbreviation;
            System.out.println("hello world!");
        }

        public String getAbbreviation() {
            return abbreviation;
        }
        public abstract void  sayHello();
    }
}

输出结果:

hello world!
hello world!
hello world!
hello world!
sizeMed is Medium
sizeMed.getAbbreviation() is M
Enum.valueOf() is Extra_Large
sizeMed.toString() is Medium; medium1 is Medium
Size.values is [Small, Medium, Large, Extra_Large]
sizeMed.ordinal() is 1
Hello,i am Large
Size.valueOf(String) is Large

如有错误,欢迎留言指正!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值