博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
34、枚举详解
阅读量:7011 次
发布时间:2019-06-28

本文共 3794 字,大约阅读时间需要 12 分钟。

知识点介绍

1、枚举可以实现一个或多个接口。枚举默认继承于java.lang.Enum类,而不是Object类。Enum类实现了java.lang.Serializable和java.lang.Comparable两个接口
2、使用enum定义、非抽象的枚举默认会使用final修饰,因此枚举不能派生子类

3、枚举类的构造器只能使用private访问控制符

4、枚举类的所有势力必须在枚举类的第一行显示列出

 

下面是一个简单的枚举应用

public class Test{    public static void main(String[] args) {        SessonEnum e=Enum.valueOf(SessonEnum.class, "Spring");        System.out.println(e.name());    }}enum SessonEnum{    Spring,Summer,Fall,Winter;}

 

枚举类的成员变量、方法和构造器

1 public class Hello { 2     public static void main(String[] args) { 3         SessonEnum e=Enum.valueOf(SessonEnum.class, "Spring"); 4         System.out.println(e.getName()); 5     } 6 } 7  8  9 enum SessonEnum{10     Spring("春"),Summer("夏"),Fall("秋"),Winter("冬");11     private  final String name;12     private SessonEnum(String name){13         this.name=name;14     }15     public String getName(){16         return name;17     }18 }

 

实现接口的枚举

1、由枚举类来实现接口里的方法——所有枚举值实现接口都是调用方法都有相同的行为

1 interface SessonInfo{ 2     void info(); 3 } 4  5 enum SessonEnum implements SessonInfo { 6      7     Spring("春"),Summer("夏"),Fall("秋"),Winter("冬"); 8      9     10     private  final String name;11     private SessonEnum(String name){12         this.name=name;13     }14     public String getName(){15         return name;16     }17     @Override18     public void info() {19         System.out.println("这里是公用接口的实现");20         21     }22 }23 24 public class Test{25     public static void main(String[] args) {26         SessonEnum spring=Enum.valueOf(SessonEnum.class, "Spring");27         SessonEnum summer=SessonEnum.Summer;28         spring.info();29         summer.info();30     }31 }

输出结果:

这里是公用接口的实现

这里是公用接口的实现

 

2、分别由每个枚举值来实现接口

1 interface SessonInfo{ 2     void info(); 3 } 4  5 enum SessonEnum implements SessonInfo { 6      7     Spring("春"){ 8         @Override 9         public void info() {10             System.out.println("这里是春季");11         }12     },Summer("夏"){13         @Override14         public void info() {15             System.out.println("这里是夏季");16         }17         18     },Fall("秋"){19         @Override20         public void info() {21             System.out.println("这里是秋季");22         }23     },Winter("冬"){24         @Override25         public void info() {26             System.out.println("这里是冬季");27         }28     };29     30     31     private  final String name;32     private SessonEnum(String name){33         this.name=name;34     }35     public String getName(){36         return name;37     }38 }39 40 public class Hello {41     public static void main(String[] args) {42         SessonEnum spring=Enum.valueOf(SessonEnum.class, "Spring");43         SessonEnum summer=SessonEnum.Summer;44         spring.info();45         summer.info();46     }47 }

输出结果:

这里是春季

这里是夏季

 

枚举抽象类

假设有一个Operation枚举类,它的4个枚举值PLUS、MINUS、TIMES、DIVIDE分别代表加、减、乘、除4种运算,该枚举类需要定义一个eval()方法来完成计算

1 public class Test{ 2     public static void main(String[] args) { 3         System.out.println("1+2="+Operation.PLUS.eval(1, 2)); 4         System.out.println("5-3="+Operation.MINUS.eval(5, 3)); 5         System.out.println("3*4="+Operation.TIMES.eval(3, 4)); 6         System.out.println("10-2="+Operation.DIVIDE.eval(10, 2)); 7     } 8 } 9 10 enum Operation{11     PLUS{12         public double eval(double x, double y) {13             return x+y;14         }15     },16     MINUS{17         public double eval(double x, double y) {18             return x-y;19         }20     },21     TIMES{22         @Override23         public double eval(double x, double y) {24             return x*y;25         }26     },27     DIVIDE{28         @Override29         public double eval(double x, double y) {30             return x/y;31         }32     };33     public abstract double eval(double x,double y);34 }

 输出结果:

1+2=3.0

5-3=2.0
3*4=12.0
10-2=5.0

转载地址:http://xtttl.baihongyu.com/

你可能感兴趣的文章
qt-solutions提供了8个开源项目
查看>>
处理:“ORA-00257: archiver error. Connect internal only, until freed”的错误问题
查看>>
java 取汉字首字母
查看>>
苹果版小黄车(ofo)app主页菜单效果
查看>>
使用Genymotion模拟器或者手机运行ionic4程序
查看>>
Hadoop之父Doug Cutting
查看>>
关于socket阻塞与非阻塞情况下的recv、send、read、write返回值---部分内容可能不确切,待讨论...
查看>>
Matlab随笔之插值与拟合(上)
查看>>
Socket 通信(基础原理、实时聊天系统雏形)
查看>>
理解和使用WPF 验证机制
查看>>
tensorflow 在加载大型的embedding模型参数时,会遇到cannot be larger than 2GB
查看>>
Flutter的教程:ListView
查看>>
xxl-job安装教程
查看>>
SpringBoot(十八)@value、@Import、@ImportResource、@PropertySource
查看>>
[dubbo] Dubbo API 笔记——配置参考
查看>>
The last access date is not changed even after reading the file on Windows 7
查看>>
SQL Server 字符串处理函数
查看>>
恢复系统管理员密码的五大奇招
查看>>
英语形容“漂亮女孩”知多少
查看>>
GridView 获取当前行的索引值
查看>>