JAVA学习之枚举
1、新建一个枚举类
public enum Apple{
FUJI,
PIPPIN,
GRANNY_SMITH
}
通过查看字节码,可以看到,枚举类的实现方式:
1)继承自java.lang.Enum类。
2)构造类为private
3)枚举内的元素通过static域来引用
2、在枚举类中添加任意的方法和域。
public enum Apple {
FUJI("red"),
PIPPIN("green"),
GRANNY_SMITH("orange"); private String color; Apple(String color) {
this.color = color;
}
public String getColor() {
return color;
}
}
在上面的类中:
1)添加了域color
2)创建了新的构造函数。
3)增加了新的方法。
3、在枚举中声明抽象方法,特定于常量的方法实现。
public enum Operation { PLUS {
@Override
double apply(double x, double y) {
return x+y;
}
},
MINUS {
@Override
double apply(double x, double y) {
return x-y;
}
},
TIMES {
@Override
double apply(double x, double y) {
return x*y;
}
},
DIVIDE {
@Override
double apply(double x, double y) {
return x/y;
}
}; abstract double apply(double x,double y);
}
针对每个枚举值,分别定义不同的方法实现。
4、策略枚举
public enum PayrollDay {
MONDAY(PayType.WEEDAY),
TUESDAY(PayType.WEEDAY),
WEDNESDAY(PayType.WEEDAY),
THURSDAY(PayType.WEEDAY),
FRIDAY(PayType.WEEDAY),
SATURDAY(PayType.WEEKEND),
SUNDAY(PayType.WEEKEND); private final PayType payType; PayrollDay(PayType payType) {
this.payType = payType;
} double pay(double houresWorked, double payRate){
return payType.pay(houresWorked, payRate);
} private enum PayType{
WEEDAY {
@Override
double overtimePay(double hrs, double payRate) {
return hrs<=HOURS_PER_SHIFT ? 0 :
(hrs - HOURS_PER_SHIFT) * payRate / 2;
}
},
WEEKEND {
@Override
double overtimePay(double hrs, double payRate) {
return hrs * payRate / 2;
}
}; private static final int HOURS_PER_SHIFT=8; abstract double overtimePay(double hrs, double payRate); double pay(double hoursWorked, double payRate){
double basePay = hoursWorked * payRate;
return basePay + overtimePay(hoursWorked,payRate);
}
} }
针对常量如果可以进行分类,则可以定义一个策略枚举,来减少样板代码
JAVA学习之枚举的更多相关文章
- Java学习笔记-枚举类型
枚举类型 枚举类型就是预先定义的一类常量集合,如一周的时间.水果的类型等.需要注意的几点内容如下: 定义枚举类时,Java默认继承java.lang.Enum,所以定义的枚举类不能继承其他类型: 枚举 ...
- Java学习笔记-枚举类
实例有限且固定的类成为枚举类 枚举类的实现 早期时候的实现形式: public static final int SEASON_SPRING = 1; public static final int ...
- java学习笔记----枚举测试题
定义义一个交通灯枚举类,包含红灯.绿灯.黄灯,需要有获得下一个灯的方法,并实现红灯出现5秒之后变成绿灯,绿灯3秒之后变成黄灯,黄灯2秒之后变成红灯,如此循环 public class Test5 { ...
- 6 Java学习之 枚举
1. 概念 枚举是一种规范,它规范了参数的形式,这样就可以不用考虑类型的不匹配,并且显示的替代了int型参数可能带来的模糊概念. 常用来定义一个final类型的变量(常量),保证输入安全.如 ...
- Java学习——枚举类
Java学习——枚举类 摘要:本文主要介绍了Java的枚举类. 部分内容来自以下博客: https://www.cnblogs.com/sister/p/4700702.html https://bl ...
- 0035 Java学习笔记-注解
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...
- java学习中的一些疑惑解答
一.java中的枚举类型: 在实际编程中,往往存在着这样的"数据集",它们的数值在程序中是稳定的,而且"数据集"中的元素是有限的.例如星期一到星期日七个数据元素 ...
- 《Java学习笔记(第8版)》学习指导
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...
- Java 基础之-枚举
目录(?)[-] 用法一常量 用法二switch 用法三向枚举中添加新方法 用法四覆盖枚举的方法 用法五实现接口 用法六使用接口组织枚举 用法七关于枚举集合的使用 DK1.5引入了新的类型-- ...
随机推荐
- java.lang.AbstractMethodError: org.apache.xerces.dom.DocumentImpl.getXmlStandalone()Z解决办法
2019-05-20 23:02:20.168 |-INFO [http-nio-8001-exec-2] com.xxx.ecc.cloudbiz.service.payment.impl.Wei ...
- 【高级算法】禁忌搜索算法解决3SAT问题(C++实现)
转载请注明出处:http://blog.csdn.net/zhoubin1992/article/details/46440389 近期梳理,翻出了当年高级算法课程做的题目.禁忌搜索算法解决3SAT问 ...
- ZOJ 3527
这题难在破环. 对于不是环的情况,只需按照一般的树形DP来做,一步一步往根递推就可以了.对于环,则枚举其中一点的两种情况,取或不取,然后再递推,就可以了.当到达某结点的下一结点为环开始的点时,退出即可 ...
- Java&&(面试题)初始化顺序总结
1 无继承情况下的Java初始化顺序: class Sample { Sample(String s) { System.out.println(s) ...
- Ruby的case语句
Ruby的case语句 case语句使用的是===判断方式,可以进行更加广义的相等判断: 可以进行类型的判断,可以进行正则表达式的判断: array = ["a",1,nil] a ...
- BNU 34986 Football on Table
"Bored? Let's play table football!" The table football is played on a rectangular table, u ...
- python+Android+uiautomator的环境
Python+Android+uiautomator的环境搭建 Python 下载适合系统的版本并安装,安装时勾选把路径加入path 验证:windows下打开cmd输入python 出现以下界面说明 ...
- 使用UIScrollView和UIPageControl做一个能够用手势来切换图片的效果
利用UIScrollView的滚动效果来实现,先上图: 实现过程是:在viewController里先增加UIScrollView和UIPageControl: -(void) loadView { ...
- Build website project by roslyn through devenv.com
1.fetch the source code2.compile controls project3.copy files under bin folder of controls to bin fo ...
- <T extends Serializable>这是什么意思呢?看明白这个,你的问题就自然而然的明白了!
1.转自:https://blog.csdn.net/liwenqiang758/article/details/8131185 自己动手丰衣足食!!! 泛型是Java SE 1.5的新特性,泛型的本 ...