java的枚举2
首先先理解一下java中枚举的本质。
java的世界中一切皆是类,下面通过一个例子解释一下enum的本质:
package cn.xnchall.enumeration;
public class Grade {
public void test() {
print(grade.A);
}
public void print(grade g) { //print A B C D E
}
}
/*class grade{
private grade(){}
public static final grade A = new grade();
public static final grade B = new grade();
public static final grade C = new grade();
public static final grade D = new grade();
public static final grade E = new grade();
}*/
enum grade{ //class
A,B,C,D,E; //object
}
grade类和grade枚举类型作用是一样的,就是说枚举类型是一个比较严格的类。它不允许在外部new grade类,因为底层实现是private的。外部要想实现new操作,必须在grade的内部实现。
下面正式介绍enumeration!
1.定义枚举的构造函数、方法和字段
package cn.xnchall.enumeration;
public class Dome {
public static void test() {
print(grade.A);
}
public static void print(grade g) { //print A B C D E
System.out.println(g.getValue());
}
public static void main(String[] args){
test();
}
}
/*class grade{
private grade(){}
public static final grade A = new grade();
public static final grade B = new grade();
public static final grade C = new grade();
public static final grade D = new grade();
public static final grade E = new grade();
}*/
enum grade{ //class A 100-90 B 89-80 C 79-70 D 69-60 E 59-0
A("100-90")
,B("89-80")
,C("79-70")
,D("69-60")
,E("59-0")
;
private String value; //每个字段的分数
private grade(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
}
上面将会执行得到的结果是:100-90
未完待续
将会补充:带有抽象方法的枚举
2.带有抽象方法的枚举
package cn.xnchall.enumeration;
public class Dome {
public static void test() {
print(grade.A);
}
public static void print(grade g) { //print A B C D E
System.out.println(g.vValue());
}
public static void main(String[] args){
test();
}
}
/*class grade{
private grade(){}
public static final grade A = new grade();
public static final grade B = new grade();
public static final grade C = new grade();
public static final grade D = new grade();
public static final grade E = new grade();
}*/
enum grade{ //class A 100-90优秀 B 89-80良好 C 79-70一般 D 69-60及格 E 59-0不及格
A("100-90"){
public String vValue() {
return "优秀";
}
}
,B("89-80"){
public String vValue() {
return "良好";
}
}
,C("79-70"){
public String vValue() {
return "一般";
}
}
,D("69-60"){
public String vValue() {
return "及格";
}
}
,E("59-0"){
public String vValue() {
return "不及格";
}
}
;
private String value; //每个字段的分数
private grade(String value) {
this.value = value;
}
public String getValue() {
return this.value;
}
public abstract String vValue();
}
上面代码执行的结果是:优秀
仔细研究上面的代码,很容易理解。
总之,java的世界“一切皆是类”,枚举就是枚举类,它里边的数据就是枚举的对象。当然了它也具有类的其他属性。
java的枚举2的更多相关文章
- Java核心 --- 枚举
Java核心 --- 枚举 枚举把显示的变量与逻辑的数字绑定在一起在编译的时候,就会发现数据不合法也起到了使程序更加易读,规范代码的作用 一.用普通类的方式实现枚举 新建一个终态类Season,把构造 ...
- 深度分析 Java 的枚举类型:枚举的线程安全性及序列化问题(转)
写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能 ...
- Java开发知识之Java的枚举
Java开发知识之Java的枚举 一丶什么是枚举 枚举可以理解为就是常量,在Java中我们定义常量.都是用 final语句. C++中都是用const关键字. 枚举跟C++概念都是一样的.就是特定的常 ...
- Java学习--枚举
枚举类型enum,地位等同于class,interface 使用enum定义的枚举类型,也是一种变量类型,可用于声明变量 枚举的一些特征 1.它不能有public的构造函数,这样做可以保证客户代码没有 ...
- Java中枚举的使用
Java中枚举其实就是静态常量,今天发现枚举里面其实还能加方法,学习了下, 代码如下: package org.pine.test; import java.util.HashMap; import ...
- 深度分析Java的枚举类型—-枚举的线程安全性及序列化问题
原文:深度分析Java的枚举类型--枚举的线程安全性及序列化问题 枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和clas ...
- Java中枚举的写法和用法
在公司代码中,用了一大堆的枚举,看得我好懵逼.下面开始看看枚举怎么写和怎么用. 一.枚举的写法 关于枚举的写法,网上好多这方面的知识.这里直接贴一个我自己写的枚举类的代 ...
- java基础---->Java中枚举的使用(一)
这里介绍一下java中关于枚举的使用. java中枚举的使用 一.枚举中可以定义方法 参照于TimeUnit的使用,TimeUnit.MILLISECONDS.sleep(1000); LoveUti ...
- Java enum枚举类型
java的枚举类型详解: 简单示例: public enum Color{ RED,BLUE,BLACK,YELLOW,GREEN } 复杂示例(带自定义构造方法与类型) public enum En ...
随机推荐
- Linux(ubuntu)安装redis集群,redis集群搭建
今天学习一下redis集群的搭建.redis在现在是很常用的数据库,在nosql数据库中也是非常好用的,接下来我们搭建一下redis的集群. 一.准备 首先我们要安装c语言的编译环境,我们要安装red ...
- $_SERVER变量
$_SERVER is an array containing information such as headers, paths, and script locations. The entrie ...
- 3D打印技术在医疗上的实际应用与实验室研究
2018-01-17 Chris 免费3D打印模型资源站 预计阅读时间:5-10分钟 关键字:3D打印髋关节.脊柱置换产品,3D打印技术辅助精准截骨,义齿,生物墨水(BioInk),干细胞 随着& ...
- Spring初始化ApplicationContext为null
1. ApplicationContextAware初始化 通过它Spring容器会自动把上下文环境对象调用ApplicationContextAware接口中的setApplicationConte ...
- Apple 内购
关于内购所需东西: 1.测试开发证书:需要打开in-app-purchase,绑定bundleid:com.aragon.TexasPoker 2.iTunes connect 里添加内购应用: 1& ...
- 【java学习笔记】Properties
Properties:可以持久化的映射,规定键和值的类型是String. Properties对象必须放到.properties文件中,其中properties文件默认为西欧编码,也因此不存储中文. ...
- 高级DirectDraw
使用高彩模式 上一章中说了可以用16位的色彩深度,但是16位的色彩深度的数据表示模式可以有两种:Alpha.5.5.5(or X.5.5.5) 和 5.6.5(这是16位色彩最常用的).对于使用哪种1 ...
- 电脑开机后,就会自动运行chkdsk,我想取消chkdsk,怎么取消
每次开机都自动检查磁盘,检测通过后下次还是一样,NTFS/FAT32分区都有可能有这样的情况,即使重装系统,仍可能出现同样情况,但是硬盘可以通过Dell 随机带的检测程序解决方法:在命令行窗口中 ...
- directX播放程序
enum PLAYSTATE {Stopped, Paused, Running, Init};PLAYSTATE g_Current=Init;HWND ghApp;HINSTANCE g ...
- ORA-00904:"T1"."AREA_ID" :标识符无效
1.错误描述 ORA-00904:"T1"."AREA_ID" :标识符无效 00904 . 00000 - "%s:invalid identifi ...