我们看一段代码
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值,此时出现了 空指针