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的新特性:泛型、可变参数、静态导入
数组可以在创建的时候就指定存放的数据类型,这样放入不同类型的时候就会发生编译错误. 而集合却可以存储多种不同类型,这样的话如果是遍历的时候在集合中装了好多不同的数据类型的时候,十分容易发生类型转换错误 ...
随机推荐
- ReCap 360 photo照片建模技术的又一个例子
这是我做的又一个利用Autodesk ReCap 360 照片建模技术做的一个例子.你可以下载模型自己把玩,或者下载原始照片自己试一试. 拍摄工具: 小米手机 照片数量:约120张 后期处理工具: p ...
- 腾讯bugly 的crash 上报和umeng的比较
说到crash上传工具,大家肯定会第一时间想到umeng,不错,umeng 是最早推出 crash 上报的工具之一,在刚推出来的时候,特别受到ios开发人员的喜爱. 因为个时候,内存是手动管理的,很容 ...
- Android java传递int类型数组给C
接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] ...
- android fragment 的用法以及与activity的交互和保存数据的方法,包括屏幕切换(转载)!
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/37992017 1.管理Fragment回退栈 类似与Android系统为Acti ...
- eclipse出现感叹号的解决办法
当eclipse导入项目出现红叉但无提示错误时,去看:1>菜单路径----Window/Show View/Console2>菜单路径----Window/Show View/Error ...
- OC中runtime的使用
一.runtime简介* RunTime简称运行时.OC就是“运行时机制”,也就是在运行时候的一些机制,其中最主要的是消息机制.* 对于C语言,“函数的调用在编译的时候会决定调用哪个函数”.* 对于O ...
- JAVA 8 函数式接口 - Functional Interface
什么是函数式接口(Functional Interface) 其实之前在讲Lambda表达式的时候提到过,所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法. 这种类型的接 ...
- (ios)MPMoviePlayerController首次播放视频的时候,没有控制条
问题: 在视频播放时,现在控制条采用磨砂的效果,会遮罩部分视频 解决思路 1 播放器直接设置不带控制条,在app在 Foreground状态,默认播放器暂停,这样需要在获得Foreground事件,进 ...
- android中的广播接收实现总结
1 首先根据广播应用内接收和应用外接收,分两个类进行管理[1] LocalBroadcastManager,应用内广播管理类[2] BroadcastManager 广播管理类(部分应用内,应用 ...
- JavaScript Patterns 5.7 Object Constants
Principle Make variables shouldn't be changed stand out using all caps. Add constants as static prop ...