java 28 - 4 JDK5的新特性 之 枚举的概述和自定义枚举类
枚举
枚举概述
是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内。举例:一周只有7天,一年只有12个月等。
回想单例设计模式:单例类是一个类只有一个实例
那么多例类就是一个类有多个实例,但不是无限个数的实例,而是有限个数的实例。这才能是枚举类。
自定义枚举类。
第一版:无参构造
public class Direction {
// 创建几个实例
public static final Direction FRONT = new Direction();
public static final Direction BEHIND = new Direction();
public static final Direction LEFT = new Direction();
public static final Direction RIGHT = new Direction();
// 构造私有,别人就不能无限的创建了
private Direction() {
}
}
第二版:带参构造
public class Direction2 {
// 创建几个实例
public static final Direction2 FRONT = new Direction2("前");
public static final Direction2 BEHIND = new Direction2("后");
public static final Direction2 LEFT = new Direction2("左");
public static final Direction2 RIGHT = new Direction2("右");
// 构造私有,别人就不能无限的创建了
// private Direction2() {
// }
// 加入成员变量,并去掉无参构造
private String name;
private Direction2(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
第三个版本:有构造方法和带参构造
public abstract class Direction3 {
// 创建几个实例
// 由于抽象类中不能实例化对象,也就是说不能这样
//public static final Direction3 FRONT = new Direction3("前");
//但是,可以使用匿名内部方法,如下:
//这样就是把new Direction3("前"){}这个子类对象重写了抽象方法:show(),并赋予 给 父亲Direction3 FRONT。
public static final Direction3 FRONT = new Direction3("前") {
@Override
public void show() {
System.out.println("前");
}
};
public static final Direction3 BEHIND = new Direction3("后") {
@Override
public void show() {
System.out.println("后");
}
};
public static final Direction3 LEFT = new Direction3("左") {
@Override
public void show() {
System.out.println("左");
}
};
public static final Direction3 RIGHT = new Direction3("右") {
@Override
public void show() {
System.out.println("右");
}
};
// 构造私有,别人就不能无限的创建了
// private Direction2() {
// }
// 加入成员变量,并去掉无参构造
private String name;
private Direction3(String name) {
this.name = name;
}
public String getName() {
return name;
}
// 加入抽象方法
public abstract void show();
}
最后是测试类:
public class DirectionDemo {
public static void main(String[] args) {
//打印第一种方式
Direction d = Direction.FRONT;
System.out.println(d); // 打印出地址值
System.out.println("------------------------------------");
//打印第二种方式
Direction2 d2 = Direction2.FRONT;
System.out.println(d2);// 打印出地址值
System.out.println(d2.getName()); //前
d2 = Direction2.RIGHT;
System.out.println(d2);
System.out.println(d2.getName());
System.out.println("------------------------------------");
//打印第三种方式
Direction3 d3 = Direction3.FRONT;
System.out.println(d3);// 打印出地址值
System.out.println(d3.getName());//前
//按理说抽象类不能调用方法,但这个可以调方法。
//由于new Direction3("前"){}这个子类对象重写了抽象方法:show()方法,而运行看右边,有show()
d3.show();
d3 = Direction3.LEFT;
System.out.println(d3);
System.out.println(d3.getName());
d3.show();
}
}
java 28 - 4 JDK5的新特性 之 枚举的概述和自定义枚举类的更多相关文章
- java 28 - 5 JDK5的新特性 之 枚举的使用
上一章,自定义了枚举类,超级麻烦.. 所以,JAVA给了一个枚举类:类 Enum<E extends Enum<E>> 注意事项 定义枚举类要用关键字enum 所有枚举类都是E ...
- Java基础和JDK5.0新特性
Java基础 JDK5.0新特性 PS: JDK:Java Development KitsJRE: Java Runtime EvironmentJRE = JVM + ClassLibary JV ...
- java 28 - 6 JDK7的新特性
JDK7的新特性: 二进制字面量 数字字面量可以出现下划线 switch 语句可以用字符串 泛型简化 异常的多个catch合并 try-with-resources 语句 二进制字面量 JDK7开始, ...
- java 28 - 7 JDK8的新特性 之 接口可以使用方法
JDK8的新特性: http://bbs.itcast.cn/thread-24398-1-1.html 其中之一:接口可以使用方法 interface Inter { //抽象方法 public a ...
- JDK5的新特性之 增强for
package cn.itcast.day19.foreach; import java.util.ArrayList; import java.util.Collection; import j ...
- Java JDK5.0新特性
JDK5.0新特性 虽然JDK已经到了1.8 但是1.5(5.0)的变化是最大的 1. 增强for循环 foreach语句 foreach简化了迭代器 作用: 对存储对象的容器进行迭代 (数组, co ...
- Javaweb学习笔记——(七)——————myexlipse基本使用、jdk5.0新特性及反射讲解
1.debug调试模式: *使用这种模式,调试程序(看到程序运行停止在这一行) -显示出来行号 -双击左边,出现一个圆点,表示设置了一个断点 *使用debug as方式,运行程序 -特使是否进入到调试 ...
- Day07 jdk5.0新特性&Junit&反射
day07总结 今日内容 MyEclipse安装与使用 JUnit使用 泛型 1.5新特性 自动装箱拆箱 增强for 静态导入 可变参数方法 枚举 反射 MyEclipse安装与使用(yes) 安装M ...
- JDK5的新特性:泛型、可变参数、静态导入
数组可以在创建的时候就指定存放的数据类型,这样放入不同类型的时候就会发生编译错误. 而集合却可以存储多种不同类型,这样的话如果是遍历的时候在集合中装了好多不同的数据类型的时候,十分容易发生类型转换错误 ...
随机推荐
- SharePoint 2013 操作文档库ECB菜单
在SharePoint的使用中,我们经常需要定制SharePoint的一系列菜单,这里就包括ECB菜单,下面,我们简单了解一下ECB菜单如何定制,以及原理. 1.正常情况文档库的ECB菜单如下图: 2 ...
- Kafka主要参数详解(转)
原文档地址:http://kafka.apache.org/documentation.html ############################# System ############## ...
- 操作系统开发系列—13.h.延时操作
计数器的工作原理是这样的:它有一个输入频率,在PC上是1193180HZ.在每一个时钟周期(CLK cycle),计数器值会减1,当减到0时,就会触发一个输出.由于计数器是16位的,所以最大值是655 ...
- Android Activity动画
动画XML文件 slide_right_in.xml <?xml version="1.0" encoding="utf-8"?> <set ...
- push notification获取device token
第一步:申请证书: 第二步:申请app ids,应用名字必须一致.然后再进入进行编辑,使其enable,绿灯. 第三步:申请provisioning profile,生成.mobileprovisio ...
- 详解 Spotlight on MySQL监控MySQL服务器
前一章详解了Spotlight on Unix 监控Linux服务器 ,今天再来看看Spotlight on MySQL怎么监控MySQL服务器. 注:http://www.cnblogs.com/J ...
- Win8.1RTM英文版安装中文语言包的两种方法
Windows 8.1和Windows Server 2012 R2 RTM出来了,下载了个英文版的安装上了,发现远景上有朋友提供中文语言包,以下提供两种语言包的安装方法: 一.使用lpksetup命 ...
- 布局 position
position : 设置定位方式 跟『定位』相关的有一些属性,最重要的一个是『position』,它主要是设置『定位方式』. 而定位方式最重要的是设置『参照物』. 配合 position 使用的有这 ...
- Team Leader炖完石头汤后干嘛
在万众创业的互联网年代,挖人组建全明星团队过于奢侈.面对水平参差不齐的团队咋办? 命运真是捉弄,半年前在大美团打工时准备做个NABC的教学项目 ,结果自己就被挖到"Competitors 竞 ...
- oracle基础知识
-- 表 create table test (names varchar2(12), dates date, num ...