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图 ...
随机推荐
- 三十三 Python分布式爬虫打造搜索引擎Scrapy精讲—数据收集(Stats Collection)
Scrapy提供了方便的收集数据的机制.数据以key/value方式存储,值大多是计数值. 该机制叫做数据收集器(Stats Collector),可以通过 Crawler API 的属性 stats ...
- C语言小知识点汇集
1. 三元表达式“?:”冒号两边的两个操作数类型必须一致. 2. 枚举变量的sizeof值同int型一样为4. 3. 为了消除不必要的计算 &&两侧的表达式,当左侧即第1个表达式不成立 ...
- ControllerDescriptor的认识
ControllerDescriptor类主要包含了对ASP.NET MVC中的Control的元数据的解析,在MVC的Model绑定以及数据处理过程中经常会遇到ControllerDescripto ...
- react antd form多组表单数据处理
import React from 'react'; import {Form, InputNumber, Input, DatePicker, Button, Select, Icon} from ...
- HDU - 6430:TeaTree (线段树合并)
Recently, TeaTree acquire new knoledge gcd (Greatest Common Divisor), now she want to test you. As w ...
- HihoCoder 1185 : 连通性·三(强连通缩点)
连通性·三 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 暑假到了!!小Hi和小Ho为了体验生活,来到了住在大草原的约翰家.今天一大早,约翰因为有事要出去,就拜托小Hi ...
- Python之numpy库
NumPy库知识结构 更多详细内容参考:http://www.cnblogs.com/zhanglin-0/p/8504635.html
- PS常用美化处理方法大全
学习PS的同学都知道,我们日常生活中使用PS就是进行一些简单的图像美白,图像颜色的优化,其他的基本不用,在长时间的PS使用过程中本人总结了一些处理皮肤的方法,都是一些非常简单的方法,希望能够帮助那些刚 ...
- Linux下更改oracle客户端字符集和服务端字符集
from:http://blog.csdn.net/chid/article/details/6166506 Linux 下更改 oracle 客户端字符集和服务端字符集 1.Linux 下更改 or ...
- 《DSP using MATLAB》示例Example7.20
代码: M = 51; alpha = (M-1)/2; Dw = 2*pi/M; l = 0:M-1; wl = Dw*l; T1 = j*0.39; k1 = 0:floor((M-1)/2); ...