我們看一段代碼
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值,此時出現了 空指針