java成神之——enum枚举操作
枚举
声明
基本使用
public enum ChineseNumber {
YI,
ER,
SAN,
SI
}
ChineseNumber.values(); // ["YI","ER","SAN","SI"]
枚举遍历
for (ChineseNumber s : ChineseNumber.values()) {
System.out.println(s.name());
}
枚举在switch中使用
ChineseNumber s = ChineseNumber.ER;
switch(s) {
case YI:
System.out.println("一");
break;
case ER:
System.out.println("二");
break;
case SAN:
System.out.println("三");
break;
case SI:
System.out.println("四");
break;
}
枚举比较
Boolean b = ChineseNumber.YI == ChineseNumber.ER;
Boolean b = ChineseNumber.YI.equals(ChineseNumber.ER);
枚举静态构造方法
public enum ChineseNumber {
YI(1),
ER(2),
SAN(3),
SI(4);
private int value;
ChineseNumber(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
ChineseNumber.YI.getValue(); // 1
使用类来模拟枚举
class MyEnum<T extends MyEnum<T>> implements Comparable<T>, Serializable{
public static final MyEnum ONE = new MyEnum(1);
public static final MyEnum TWO = new MyEnum(2);
public static final MyEnum THERE = new MyEnum(3);
public static final MyEnum FOUR = new MyEnum(4);
private int value;
private MyEnum(int value){
this.value = value;
}
public int getValue() {
return value;
}
}
MyEnum.TWO.getValue();
枚举中定义抽象方法
public enum MyAction {
fn {
public String execute() {
return "execute this method";
}
};
public abstract String execute();
};
MyAction.fn.execute();
枚举实现接口
public enum RegEx implements Predicate<String> {
LETTERS("[a-zA-Z]+");
private final Pattern pattern;
private RegEx(final String pattern) {
this.pattern = Pattern.compile(pattern);
}
@Override
public boolean test(final String input) {
return this.pattern.matcher(input).matches();
}
}
RegEx.LETTERS.test("abc");
或者
public enum RegEx implements Predicate<String> {
ISLETTERS {
@Override
public boolean test(final String input) {
return Pattern.compile("[a-zA-Z]+").matcher(input).matches();
}
};
}
RegEx.ISLETTERS.test("abc");
单例模式
枚举是实现单例模式目前最好最优的方法
枚举被引用时才会实例化
public enum MySingletonPattern {
Loneliness;
private MySingletonPattern () {}
public String SomeWords() {
return "I am so lonely";
}
}
MySingletonPattern.Loneliness.SomeWords();
使用静态代码快
public enum EnglishWord {
a,b,c,d;
private String upper;
String getUpper() {
return upper;
}
static {
a.upper = "A";
b.upper = "B";
c.upper = "C";
d.upper = "D";
}
}
EnglishWord.a.getUpper();
EnumSet
EnumSet<EnglishWord> set = EnumSet.range(EnglishWord.a, EnglishWord.b); // 取枚举部分值from...to
EnumSet<EnglishWord> set = EnumSet.of(EnglishWord.a);
EnumMap
public enum EnglishLowerWord {
a, b, c;
}
public enum EnglishUpperWord {
A, B, C;
}
EnumMap<EnglishLowerWord, EnglishUpperWord> map = new EnumMap<EnglishLowerWord, EnglishUpperWord>(EnglishLowerWord.class);
map.put(EnglishLowerWord.a, EnglishUpperWord.A);
map.put(EnglishLowerWord.b, EnglishUpperWord.B);
map.put(EnglishLowerWord.c, EnglishUpperWord.C);
结语
本文章是java成神的系列文章之一
如果你想知道,但是本文没有的,请下方留言
我会第一时间总结出来并发布填充到本文
java成神之——enum枚举操作的更多相关文章
- java成神之——数值操作BigDecimal,BigInteger,Random,SecureRandom
数值操作 数值新特性 包装类 浮点 BigDecimal BigInteger 数值本地化 随机数 假随机数 真随机数 播种 结语 数值操作 数值新特性 123_456 等价于 123456,增加可读 ...
- java成神之——线程操作
线程 Future CountDownLatch Multithreading synchronized Thread Producer-Consumer 获取线程状态 线程池 ThreadLocal ...
- java成神之——jaxb操作xml的基本使用
JAXB 依赖 读取xml配置 写配置 自定义写配置 结语 JAXB 依赖 <dependency> <groupId>javax.activation</groupId ...
- java成神之——注释修饰符
注释修饰符 自定义注释 元注释 通过反射在runtime访问注释 内置注释 多注释实例 错误写法 使用容器改写 使用@Repeatable元注释 注释继承 使用反射获取注释 获取类的注释 获取方法的注 ...
- java成神之——MySQL Connector/J 的基本使用
使用示例 DBCP连接池 结语 使用示例 public class demo { static Connection con = null; static Statement st = null; s ...
- java成神之——文件IO
文件I/O Path Files File类 File和Path的区别和联系 FileFilter FileOutputStream FileInputStream 利用FileOutputStrea ...
- java成神之——Stream和Optional
Stream流 基本使用 流关闭 平行流 流重用 iterator转换成流 分组计数 无限流 流转集合 压缩流 统计数值流 集合转换流遍历 流拼接 reduce 使用流生成随机字符串 流的包装流 几种 ...
- java成神之——正则表达式基本使用
正则表达式 常用匹配规则 基本使用 标记符的使用 部分正则标记 正则表达式在字符串方法中的使用 结语 正则表达式 常用匹配规则 [abc] abc其中一个 [^abc] abc之外的一个 [a-z] ...
- java成神之——ImmutableClass,null检查,字符编码,defaultLogger,可变参数,JavaScriptEngine,2D图,类单例,克隆,修饰符基本操作
ImmutableClass null检查 字符编码 default logger 函数可变参数 Nashorn JavaScript engine 执行脚本文件 改变js文件输出流 全局变量 2D图 ...
随机推荐
- Win10/Server2016镜像集成离线补丁
Win10镜像集成离线补丁 因为正常安装系统后再打补丁比较漫长,可以事先做好打过补丁的iso,备将来使用. 以管理员身份运行cmd,然后通过dism提取.挂载.集成补丁.保存install.wim镜像 ...
- IOS-内存分析
一.内存分析 1.静态分析(Analyze) 不运行程序, 直接检测代码中是否有潜在的内存问题(不一定百分百准确, 仅仅是提供建议) 结合实际情况来分析, 是否真的有内存问题 2.动态分析(Profi ...
- C/C++开发android应用
(转自:http://blog.csdn.net/srplab1/article/details/7617963) 在某些情况下,比如原来与很多c/c++的代码, 可能希望采用c/c++编写andro ...
- 【CSAPP】三、程序的机器级表示
本章基于两种相关的机器语言:Intel IA32和x86-64,前者注重32位,后者注重64位. 本章脉络:c\汇编\机器码之间的关系,数据的表示,控制结构如何实现.运行栈,局部变量的存储,数据结构. ...
- canvas 绘制验证码
注意: 真正项目中验证码图片都是由服务器端(PHP.JSP.Node.js)技术来生成. 最终效果: 代码: <!DOCTYPE html> <html> <head l ...
- Java设计模式百例 - 观察者模式
观察者(Observer)模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,主体对象的状态变化会通知所有观察者对象.观察者模式又叫做发布-订阅(Publish/Subscribe ...
- [转]优化Flash性能
原文:http://www.adobe.com/devnet/flash/articles/optimizing-flash-performance.html 翻译:http://bbs.9ria.c ...
- 演示使用Metasploit入侵Android
文本演示怎么使用Kali Linux入侵Android手机. Kali Linux IP地址:192.168.0.112:接收连接的端口:443. 同一局域网内android手机一部(android ...
- win10环境变量的配置
c盘->环境变量: 1.添加变量名和变量值 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_161 2.添加变量名和变量值 变量名:JAVA_H ...
- 在django中使用logging
转:http://www.tuicool.com/articles/IV3meeE logging django使用python的内置模块logging来管理自己的日志,logging中四个重要的概念 ...