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 ...
随机推荐
- java7 - JDK
一.学习大纲: 1. 熟练使用 JDK 文档 2. 软件包 java.lang 提供利用 Java 编程语言进行程序设计的基础类. 3. 软件包 java.math 提供用于执行任意精度整数算法 (B ...
- css渲染(二) 文本
一.文本样式 首行缩进 text-indent 首行缩进是将段落的第一行缩进,这是常用的文本格式化效果.一般地,中文写作时开头空两格.[注意]该属性可以为负值:应用于: 块级元素(包括block和i ...
- 10分钟入门spark
Spark是硅谷各大公司都在使用的当红炸子鸡,而且有愈来愈热的趋势,所以大家很有必要了解学习这门技术.本文其实是笔者深入浅出hadoop系列的第三篇,标题里把hadoop去掉了因为spark可以不依赖 ...
- SpringBoot项目在IntelliJ IDEA中实现热部署
spring-boot-devtools是一个为开发者服务的一个模块,其中最重要的功能就是自动应用代码更改到最新的App上面去.原理是在发现代码有更改之后,重新启动应用,但是速度比手动停止后再启动更快 ...
- 和scikit-learn打个招呼
1.先装对应的库.不能偷懒,都得装,不然飞不起来. pip install scikit-learn pip install numpy pip install scipy 2.测试如下代码. imp ...
- 2.1 存储器域与PCI总线域
HOST主桥的实现因处理器系统而异.PowerPC处理器和x86处理器的HOST主桥除了集成方式不同之外,其实现机制也有较大差异.但是这些HOST主桥所完成的最基本功能依然是分离存储器域与PCI总线域 ...
- linux下的framebuffer显示图片
void showbmp2() { int x,y; unsigned char *p; int index=0; struct fb_var_screen ...
- nginx重写rewrite的[emerg] unknown directive
今天写nginx的重写规则.怎么写总是报这个错误.
- mysql学习笔记02 CRUD操作
添加数据insert into 表名(字段列表) values(对应字段的列表值) 查询数据 select *from 表名 where 条件select *from 表名 where 1条件 1表示 ...
- Java Web项目(Extjs)报错八
1.Java Web项目(Extjs)报错八 具体报错如下: org.springframework.dao.DataIntegrityViolationException: Could not ex ...