Java基础 -- 枚举类Enum
Java基础 -- 枚举类Enum
- 1. 介绍
- 1.1 xxx
- 1.2 代码块
- 1.2.1 代码块
- 1.2.2 代码块
- 2. 返回枚举项的序号
- 2.1 ordinal方法
- 2.2 正常写法
- 2.3 Apache的CollectionUtils工具类(推荐)
- 3. 类属性值的Null和非空判断
- 4. Awakening
1. 介绍
1.1 xxx
- 代码复用,多种数据类型执行相同的代码
- 在编译期间可以检查类型是否安全,报警ClassCastException,类型转无法转换,同时所有强制性类型转换都是自动和隐式进行的,提高了代码的安全性和重用性
- 提高代码的可读性
1.2 代码块
1.2.1 代码块
- 执行顺序:静态代码块 → main → 构造代码块 → 构造方法
public class Demo01 {
static{
System.out.println("父类静态代码块开始执行!");
}
{
System.out.println("父类构造代码块开始执行!");
}
public Demo01(){
System.out.println("父类构造方法开始执行!");
}
public static void main(String[] args) {
System.out.println("父类开始运行main");
new Demo01();
}
}
1.2.2 代码块
- 执行顺序:父类静态代码块 → 子类静态代码块 → main → 父类构造代码块 → 父类构造方法 → 子类构造代码块 → 子类构造方法
public class Demo02 extends Demo01{
static{
System.out.println("子类静态代码块开始执行!");
}
{
System.out.println("子类构造代码块开始执行!");
}
public Demo02(){
System.out.println("子类构造方法开始执行!");
}
public static void main(String[] args) {
System.out.println("子类开始运行main");
new Demo02();
}
}
2. 返回枚举项的序号
2.1 ordinal方法
public enum Light {
RED,
GREEN,
YELLOW;
}
public static void main(String[] args) {
System.out.println(Light.GREEN.ordinal());
}
2.2 正常写法
public enum Light {
RED(0),
GREEN(1),
YELLOW(2);
private Integer id;
Light(Integer id) {
this.id = id;
}
public Integer getId(){
return this.id;
}
}
public static void main(String[] args) {
System.out.println(Light.GREEN.id);
}
2.3 Apache的CollectionUtils工具类(推荐)
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.1</version>
</dependency>
@Test
void demo02() {
String[] arrayA = new String[] { "1", "2", "3", "4"};
String[] arrayB = new String[] { "3", "4", "5", "6" };
List<String> listA = Arrays.asList(arrayA);
List<String> listB = Arrays.asList(arrayB);
//1、并集 union
System.out.println(CollectionUtils.union(listA, listB));
//输出: [1, 2, 3, 4, 5, 6]
//2、交集 intersection
System.out.println(CollectionUtils.intersection(listA, listB));
//输出:[3, 4]
//3、交集的补集(析取)disjunction
System.out.println(CollectionUtils.disjunction(listA, listB));
//输出:[1, 2, 5, 6]
//4、差集(扣除)
System.out.println(CollectionUtils.subtract(listA, listB));
//输出:[1, 2]
}
3. 类属性值的Null和非空判断
Utils Code
import java.util.Collection;
public class AttributeValidate {
private static final String NOT_NULL_FAILURE_MESSAGE = "does not accept null args";
private static final String NOT_EMPTY_FAILURE_MESSAGE = "does not accept empty args";
public static void notNull(Object... args_) {
if (args_ == null)
throw new IllegalArgumentException(NOT_NULL_FAILURE_MESSAGE);
for (Object arg : args_) {
if (arg == null)
throw new IllegalArgumentException(NOT_NULL_FAILURE_MESSAGE);
}
}
public static void notEmpty(Object... args_) {
if (args_ == null)
throw new IllegalArgumentException(NOT_EMPTY_FAILURE_MESSAGE);
for (Object arg : args_) {
if (arg == null)
throw new IllegalArgumentException(NOT_EMPTY_FAILURE_MESSAGE);
if (arg instanceof Collection<?>) {
if (((Collection<?>) arg).size() == 0)
throw new IllegalArgumentException(NOT_EMPTY_FAILURE_MESSAGE);
}
}
}
}
Test Code
AttributeValidate.notNull(。。。。。。);
4. Awakening
在一秒钟内看到本质的人和花半辈子也看不清一件事本质的人,自然是不一样的命运。