我们看一段代码
java
public enum Color {
RED, BLUE, YELLOW;
public static Color parse(String color) {
return null;
}
}
public static void main() {
Color color = Color.parse("");
// 极具迷惑性,大家日常开发肯定这么写过
switch (color) {
case RED:
break;
case BLUE:
break;
case YELLOW:
break;
default:
break;
}
}
运行一下,发现了 空指针 Color.ordinal()' on a null object reference
为什么呢?
原来Color是一个继承了 Enum的特殊类,里面有一个 ordinal() 方法,当我们使用 switch去传入 color时,编译器内部会调用 Color的ordinal()方法去获取int值,此时出现了 空指针