JDK5新特性:枚举
时间:2019-02-17
本文章向大家介绍JDK5新特性:枚举,主要包括JDK5新特性:枚举使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
枚举
一些程序在运行时,他需要的数据不能是任意的,而必须是一定范围内的值,JDK5以前采用自定义类来解决,JDK5以后可以直接采用枚举解决。
在JDK5之后,使用enum关键字定义一种新的类型,称为枚举类型。
Enum类和enum关键字
使用enum关键字定义的枚举类,实际上就相当于定义了一个类,此类继承了Enum类而已。
无参
class Grade{
private Grade(){}
public satic final Grade A = new Grade();
public satic final Grade B = new Grade();
}
//相当于
enum Grade{
A,B;
}
带参
import org.junit.Test;
public class Demo {
@Test
public void test() {
print(Grade.B);
}
public void print(Grade g) {
String value = g.getValue();
System.out.println(value);
}
}
enum Grade {
A("100-90"), B("89-80");
private String value;
private Grade(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
}
带抽象方法
import org.junit.Test;
public class Demo {
@Test
public void test() {
print(Grade.B);
}
public void print(Grade g) {
String value = g.localeValue();
System.out.println(value);
}
}
enum Grade {
A("100-90") {
@Override
public String localeValue() {
return "优";
}
},
B("89-80") {
@Override
public String localeValue() {
return "良";
}
};
private String value;
private Grade(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
public abstract String localeValue();
}
注意事项
定义枚举类要用关键字enum;
所有枚举类都是Enum的子类;
枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。建议不要省略;
枚举类可以有构造器,但必须是private的,它默认的也是private的。枚举项的用法比较特殊:枚举(“”);
枚举类也可以有抽象方法,但是枚举项必须重写该方法。
Enum类中定义了如下的方法
public class GeadeTest {
public static void main(String[] args) {
//创建枚举对象
Grade gradeA = Grade.A;
Grade gradeB = Grade.B;
// int compareTo(E o):自然排序,返回两个枚举项之间相差几位
System.out.println(gradeA.compareTo(gradeA));
System.out.println(gradeA.compareTo(gradeB));
System.out.println(gradeB.compareTo(gradeA));
System.out.println("---------------");
// String name():枚举的名字
System.out.println(gradeA.name());
System.out.println(gradeB.name());
System.out.println("---------------");
// int ordinal():枚举的序号
System.out.println(gradeA.ordinal());
System.out.println(gradeB.ordinal());
System.out.println("---------------");
// String toString()
System.out.println(gradeA.toString());
System.out.println(gradeB.toString());
System.out.println("---------------");
// <T> T valueOf(Class<T> type,String name):单个枚举对象
Grade grade = Enum.valueOf(Grade.class, "A");
System.out.println(grade.getValue());
System.out.println("----------------");
// values():此方法虽然在JDK文档中查找不到,但每个枚举类都具有该方法,它遍历枚举类的所有枚举值非常方便
Grade[] grades =Grade.values();
for (Grade g : grades) {
System.out.println(g);
System.out.println(g.getValue());
}
}
}
枚举:只能在本类中创建实例
REGISTER_SUCCEED//注册成功
REGISTER_FAILED//注册失败
- 使用Windbg和SoS扩展调试分析.NET程序
- WordPress 路径相关函数总结(四):路径相关常量
- .net和java互操作
- WordPress 路径相关函数总结(三):插件路径相关函数
- 修改WordPress 搜索结果页面url 形式,安全有保障
- C# Enum设计和使用的相关技巧
- 小程序如何利用更低成本获得高流量?
- 使用System.Net.Mail通过gmail发送电子邮件
- 删除 WordPress 导航菜单的多余 CSS 选择器(id或class)
- es6 对象的扩展
- 自定义WordPress 标签云小工具相关参数
- 检查.NET程序平台目标(Platform Target)工具CorFlags
- 哪些行业最适合抢驻小程序?
- WordPress 一键关闭/禁止页面评论功能
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- c语言之创建字符串的两种方式
- 机器学习-文本分类(1)之独热编码、词袋模型、N-gram、TF-IDF
- spring之自动装配的三种方式
- 机器学习-文本分类(2)-新闻文本分类
- Mysql5.6版本新增列,执行DDL的时候竟然锁表了,这应该是是最好的解决办法之一了!!
- spring之bean的作用域
- spring之spring表达式语言:SpEL
- 反欺诈模型(数据不平衡)
- 基于TypeScript封装Axios笔记(一)
- 一次性清除“知乎”所有DIV
- spring之bean之间的关系
- spring之未加后置处理器的bean的生命周期
- linux之在centos7中配置java开发环境
- 秒懂java规则表达式框架Aviator2.3.0
- 细品Redis高性能数据结构之SDS