栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java枚举类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java枚举类

枚举类
  • 类的对象只有有限个,确定的。
  • 如果枚举类中只有一个对象,则可以作为单例模式的实现方式。
枚举类的实现 自定义枚举类

JDK1.5之前需要自定义枚举类

public class Test {
    public static void main(String[] args) {
        Book java = Book.JAVA;
        System.out.println(java);
    }
    static class Book{
        //1声明Book类的属性:private final修饰
        private final String name;
        private final String author;
        //2私有化构造器
        private Book(String name,String author){
            this.author = author;
            this.name = name;
        }
        //3提供当前枚举类的多个对象
        public static final Book JAVA = new Book("JAVA","张三");
        public static final Book PHP = new Book("PHP","李四");

        public String getName() {
            return name;
        }

        public String getAuthor() {
            return author;
        }

        @Override
        public String toString() {
            return "Book{" +
                    "name='" + name + ''' +
                    ", author='" + author + ''' +
                    '}';
        }
    }

}

使用enum关键字定义枚举类

JDK1.5新增enum关键字用于定义枚举类

public class test {
    public static void main(String[] args) {
        Book java = Book.JAVA;
        System.out.println(java);
    }
    //使用enum关键字定义枚举类
    enum Book{
        //1.提供当前枚举类多个对象
        JAVA("JAVA","张三"),
        PHP("PHP","李四");

        //2.声明Book对象属性,使用private final修饰
        private final String name;
        private final String author;
        //3.私有化构造器,给对象赋值
        private Book(String name,String author){
            this.name = name;
            this.author = author;
        }

        public String getName() {
            return name;
        }

        public String getAuthor() {
            return author;
        }
    }
}
枚举类的属性
  • 枚举类对象的属性不允许被改动,所以应该使用private final修饰
  • 枚举类使用private final修饰的属性应该在构造器中为其赋值
  • 若枚举类显式的定义了带参数的构造器,则在列出枚举值时也必须对应的传入参数
Enum类中常用的方法
  • values():返回枚举类型的对象数组,方便遍历所有枚举值
  • valueOf(String str):返回枚举类中对象名是str的对象
  • toString():返回当前枚举类对象的常量名称
public class test {
    public static void main(String[] args) {
        Book java = Book.JAVA;
        System.out.println(java.toString());
        System.out.println(Book.valueOf("PHP"));
        Book[] values = Book.values();
        for (Book book:values) {
            System.out.println(book);
        }
    }

    enum Book{

        JAVA("JAVA","张三"),
        PHP("PHP","李四");


        private final String name;
        private final String author;

        private Book(String name,String author){
            this.name = name;
            this.author = author;
        }

        public String getName() {
            return name;
        }

        public String getAuthor() {
            return author;
        }
    }
}
使用enum关键字定义的枚举类实现接口
  • 同普通类实现接口方法
  • 枚举类对象各自实现接口方法
public class test {
    public static void main(String[] args) {
        Book java = Book.JAVA;
        java.out();
        java.show();
    }
    //接口 Info
    interface Info{
        void show();
        void out();
    }

    enum Book implements Info{
        //1.提供当前枚举类多个对象,使用public static final修饰
        JAVA("JAVA","张三"){
            @Override
            public void show() {
                System.out.println("java实现show");
            }
        },
        PHP("PHP","李四"){
            @Override
            public void show() {
                System.out.println("php实现show");
            }
        };


        private final String name;
        private final String author;

        private Book(String name,String author){
            this.name = name;
            this.author = author;
        }

        public String getName() {
            return name;
        }

        public String getAuthor() {
            return author;
        }

        @Override
        public void out() {
            System.out.println("实现out方法");
        }
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号