Java枚舉和C語言有些相似,但也有不同之處。
首先,兩者都可以使用枚舉類型定義一組具有固定值的常量。例如:
// Java enum Color { RED, GREEN, BLUE } // C enum Color { RED, GREEN, BLUE };
在使用時(shí),可以通過枚舉值直接訪問常量:
// Java Color red = Color.RED; // C enum Color color = RED;
然而,Java的枚舉類型與C的枚舉有所不同。Java的枚舉類型是一個(gè)類,它可以擁有方法、實(shí)現(xiàn)接口等,而C的枚舉只是一組常量的集合。
Java的枚舉類型還可以有構(gòu)造函數(shù)和成員變量:
// Java enum Color { RED("#FF0000"), GREEN("#00FF00"), BLUE("#0000FF"); private String code; private Color(String code) { this.code = code; } public String getCode() { return code; } } // C(沒有構(gòu)造函數(shù)或成員變量) enum Color { RED, GREEN, BLUE };
此外,Java的枚舉類型是單例模式的,即在應(yīng)用程序中只有一個(gè)實(shí)例。這不像C的枚舉,每個(gè)枚舉值都是單獨(dú)的常量。
綜上所述,Java的枚舉類型與C的枚舉類型有相似之處,但也有一些重要的區(qū)別。