java中的枚举类_java中的枚举类型
java中为了对参数类型使用限定,引入了泛型,实现了在编译期对参数类型是否合法的判断。同样,java为了对参数的值的限定,引入了枚举类,实现了在编译期对参数的值是否合法的判断。
首先我们用自定义类的方法实现枚举类,可以参考单例模式的实现思路,将类的构造方法设置为私有的,在类内部定义static的变量,只能直接通过类名访问自己定义的类,实现对类的值的限定。
1 public class TestEnum {
2
3 public static void main(String[] args) {
4 Weekday w = Weekday.Fri;
5 System.out.println(w);
6 System.out.println(Weekday.s);
7
8 }
9 }
10
11 class Weekday{
12 String weekday = null;
13 private Weekday(String str){
14 this.weekday = str;
15 }
16 static int s = 3000;
17 public static Weekday Sun = new Weekday("Sunday");
18 public static Weekday Mon = new Weekday("Monday");
19 public static Weekday Tues = new Weekday("Tuesday");
20 public static Weekday Wed = new Weekday("Wednesday");
21 public static Weekday Thu = new Weekday("Thurday");
22 public static Weekday Fri = new Weekday("Friday");
23 public static Weekday Sat = new Weekday("Saturday");
24
25 @Override
26 public String toString(){
27 return this.weekday;
28 }
29
30
31 }
使用的时候,每调用一次static属性,就创建了一个实例。静态的成员可以通过类名直接访问。
java中用enum表示枚举类,我们通过例子学习:
1 public class TestEnum1 {
2 public static void main(String[] args) {
3 // TODO Auto-generated method stub
4 Num n = Num.Six;
5 System.out.println(n);
6 System.out.println(n.ordinal());//表示的数字,从0开始。
7 System.out.println(Weekday1.FRI);
8 System.out.println(Weekday1.FRI.nextDay().nextDay());
9 System.out.println(Weekday1.FRI.nextDay().nextDay().ordinal());
10 }
11 }
12
13 enum Num{
14 Zero,One,Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten;
15 Num() {
16 System.out.println("this is null parameter constructor func");
17 }
18 }
19
20 enum Weekday1{
21 SUN("Sunday"),MON("Monday"),TUE("Tuesday"),WED("Wednesday"),THU("Thurday"),FRI("Friday"),SAT("Saturday");
22 String weekday1 = null;
23 Weekday1(String weekday1){
24 this.weekday1 = weekday1;
25 }
26 @Override
27 public String toString(){
28 return this.weekday1;
29 }
30 public Weekday1 nextDay() {
31 switch (this) {
32 case SUN:
33 return MON;
34 case MON:
35 return TUE;
36 case TUE:
37 return WED;
38 case WED:
39 return THU;
40 case THU:
41 return FRI;
42 case FRI:
43 return SAT;
44 default:
45 return SUN;
46 }
47
48 }
49 }
通过两个类的比较和输出可以总结出:
enum是一个特殊的类,他定义了自己的常量,而且类型是自己,默认的toString方法是把自己的名字转换成string。
enum也有普通类的大部分用法,包括构造函数,私有变量,抽象函数(比如匿名内部类实现),不过用自定义成员的时候。必须把枚举常量放在枚举类的第一行。每个枚举常量在定义的时候使用了一次构造函数,在其他类中调用的时候也会再调用一次构造函数,两次的值一样,但是指向的实际对象其实是不一样的(可以通过构造函数的打印次数得出此结论)。ordinal()函数返回枚举常量的序数(在声明中的位置,初始常量的序数是0),被设计用于复杂的基于enum的数据结构。
java中的枚举类_java中的枚举类型相关推荐
- java bean的反射类_JAVA中反射机制五(JavaBean的内省与BeanUtils库)
内省(Introspector) 是Java 语言对JavaBean类属性.事件的一种缺省处理方法. JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法 ...
- java如何调用static类_Java中的static的使用指南
一.Java中的static使用之静态变量 1.Java 中被static修饰的成员称为静态成员或类成员.它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享.且优先于对象存在.静态成员可以使 ...
- java中源代码的类_java中源代码功能了解
datainput和dataoutput类的作用: java.io.DataInput 一句话概括,从二进制流中读取字节到缓存数组 从二进制流中转化字节 读取一些字节从输入流中,存储他们在缓存数组中 ...
- java中的并发类_java中并发常用工具类
前言:在你无聊的时候,想想比你优秀还努力的人,也许就不觉的无聊了 今天下午没事干把买的java并发编程艺术这本书拿出来看了看,看了下也记不住,还是好记性不如烂笔头,今天讲四个并发中可能会用到的工具类, ...
- java异常分类三大类_JAVA 中异常的分类
JAVA中的异常可以大体上分为三大类: Error,RuntimeException,Exception 基类Throwable派生的. 使用的方法也是基本一致的,都是通过关键字throw+Throw ...
- java 不能继承的类_java中不能继承的类有哪些?
在Java中,只要是被定义为final的类,也可以说是被final修饰的类,就是不能被继承的. 因为jdk的开发者认为,有一些最基本的类没要必要对开发者开放,如果用户继承时操作有误,很可能引入很多问题 ...
- java 中的class类_Java中Class类简介
Java中Class类简介 1. 在面向对象的世界里,万事万物皆对象.(java语言中,静态的成员.普通数据类型除外) 类是不是对象呢?类是(哪个类的对象呢?)谁的对象呢? -- 类是对象,类是jav ...
- java 参数代替所有类_Java中的常用类
1 常用类NO13 [ Int Interger short Short byte Byte double Double float Float Boolean Boolea ...
- java 对象 转换 工具类_Java中excel与对象的互相转换的通用工具类编写与使用(基于apache-poi-ooxml)...
通用excel与对象相互转换的工具类 前言:最近开发需要一个Excel批量导入或者导出的功能,之前用过poi-ooxml开发过一个导入的工具类,正好蹭着这次机会,把工具类的功能进行完善. 使用说明: ...
最新文章
- Sqoop 1.99.3 hadoop-1.2.1 安装配置
- 创建一个dynamics 365 CRM online plugin (四) - PreValidation
- 《LINUX内核设计与实现》第五章学习总结
- 【渝粤题库】陕西师范大学700004 植物生理学
- 第四十五期:万亿级日访问量下,Redis在微博的9年优化历程
- html超链接点不了_HTML、CSS、JS都有哪些区别?不看必悔
- hadoop2.2.0 分布式存储hdfs完全分布式搭建及功能测试记录(一)----架构及原理介绍...
- 敏捷开发一千零一问系列之十二:敏捷实施的步骤?
- 使用rsync+inotify+apache做分布式图片服务器的部署方法
- 给DataGridView 的单元格 赋空值
- 智能配电房综合监控系统的探讨
- 防水穿墙套管在建筑外墙管道需设置柔性连接
- java第十一次作业
- 360企业版的IT管理价值
- open_table与opened_table
- Houdini运行时崩溃了怎么办?别害怕,还有一点点救!
- 从网卡中截获sql server的sql语句
- android 图片读写,Android读取本地照片和视频相册
- riscv 的 CSR
- 打出一个e^x的图像
热门文章
- Find Integer(费马大定理的使用)
- Coloring Dominoes
- 4.3 计算机网络之IPv4(IPv4分组、IPv4地址、NAT、子网划分与子网掩码、CIDR、ARP协议、DHCP、ICMP)
- 启明云端分享|乐鑫ESP32-WROOM-32E和ESP32-WROOM-32UE两款模组的区别
- ESP32-CAM使用过程中可能会遇到的问题
- android o preview 3,Android O Preview 之 通知渠道(Notification Channels)
- verilog中wire和reg的区别,什么时候用wire?什么时候用reg?
- 计算机英语教程第6版司爱侠,计算机专业英语教程(第3版)宋德福 司爱侠 练习参考答案...
- 有监督学习和无监督学习举例_对比自监督学习
- java des加密解密