最近寫項目發現pythoncom 導入 win32api、win32con、win32com、win32gui 等win32相關的包都會出現或多或少問題,Google一大堆不靠譜的方法試了個遍。 特此記錄一下解決辦法 ...
枚舉
1、枚舉簡介
枚舉,是java中的一種比較特殊的class,它繼承了java.lang.Enum類,也就是說在枚舉類中是不能夠繼承其他類的。枚舉類型可以取代以往常量的定義方式,即將常量封裝在類或介面中。此外,枚舉類型還提供了安全檢查功能。枚舉類型本質上還是以類的形式存在
以往設置常量,通常將常量放置在介面中,這樣在程式中就可以直接使用了,並且該常量不能被修改,因為在介面中定義的常量時,該常量的修飾符為final與static。
public interface Color
{
public static final int RED = 1;
public static final int GREEN = 2;
public static final int BLUE = 3;
}
使用枚舉定義常量的語法如下:
public enum ColorEnum
{
RED,
GREEN,
BLUE,
}
常量聲明 會有一些問題,比如
-
類型不安全。比如在一個方法中要求傳入形參,用常量的話,形參就是int類型,開發者傳入任意類型的int類型值就可以,但是如果是枚舉類型的話,那就只能傳入枚舉類中包含的對象。
-
沒有命名空間。開發者要在命名的時候以一定的格式來確定這個常量的使用範圍,比如是四季的話就是SPRING表示春天,這樣另外一個開發者再看這段代碼的時候才知道這四個常量分別代表季節。
命名規範:
final常量:使用大寫字母命名,並且中間使用下劃線進行連接。
enum枚舉:使用大寫字母命名,並且中間使用下劃線進行連接。
public static void doit(ColorEnum c)
{
switch (c)
{
case RED:
System.out.println("This is RED");
break;
case BLUE:
System.out.println("This is GREEN");
break;
case GREEN:
System.out.println("This is BLUE");
break;
default:
break;
}
}
public static void main(String[] args)
{
doit(ColorEnum.RED);
}
2 、操作枚舉類型成員的方法
方法名稱 | 具體含義 | 使用方法 |
---|---|---|
values() | 該方法可以將枚舉類型成員以數組的形式返回 | 枚舉類型名稱.values() |
valueOf() | 該方法可以實現將普通字元串轉換為枚舉實例 | 枚舉類型名稱.valueOf("ABC") |
compareTo() | 該方法用於比較兩個枚舉對象在定義時的順序 | 枚舉對象.compareTo() |
ordinal() | 該方法用於得到枚舉成員的位置索引 | 枚舉對象.ordinal() |
(1)values()方法
該方法可以將枚舉類型成員以數組的形式返回,也可以通過該方法獲取枚舉類型的成員。
/**
* @Author IBing
* @Date 2022/8/5 21:17
* @Version 1.0
*/
public class showEnum {
enum ColorEnum{
RED,
BLUE,
GREEN,
YELLOW
}
public static void main(String[] args) {
System.out.println("枚舉成員有:"+Arrays.toString(ColorEnum.values()));
System.out.println("=================================");
for (ColorEnum c: ColorEnum.values()) {
System.out.println("枚舉成員:"+c);
}
}
}
執行結果:
(2)valueOf()與compareTo()方法
/**
* 枚舉中valueOf()與compareTo()方法的使用
* @author pan_junbiao
*/
public class EnumMethodTest
{
enum ColorEnum
{
RED, BLUE, GREEN
}
// 定義比較枚舉類型方法,參數類型為枚舉類型
public static void compare(ColorEnum c)
{
// 根據values()方法返回的數組做迴圈操作
for (int i = 0; i < ColorEnum.values().length; i++)
{
// 將比較結果返回
System.out.println(c + "與" + ColorEnum.values()[i] + "的比較結果為:" + c.compareTo(ColorEnum.values()[i]));
}
}
public static void main(String[] args)
{
// 使用valueOf()將字元串轉換為枚舉實例
ColorEnum c = ColorEnum.valueOf("BLUE");
compare(c);
}
}
執行結果:
說明:調用compareTo()方法返回的結果,正值代表方法中的參數在調用該方法的枚舉對象位置之前;0代表兩個相互比較的枚舉成員的位置相同;負值代表方法中參數在調用該方法的枚舉對象位置之後。
(3)ordinal()方法
該方法用於得到枚舉成員的位置索引。
public class showEnum {
enum ColorEnum{
RED,
BLUE,
GREEN,
YELLOW
}
public static void main(String[] args) {
for (ColorEnum c: ColorEnum.values()) {
System.out.println("枚舉成員 "+ c+" 的位置索引為:"+c.ordinal());
}
}
執行結果:
3、使用枚舉類型的優勢
枚舉類型聲明提供了一種用戶友好的變數定義方法,枚舉了某種數據類型所有可能出現的值。總結枚舉類型,它具有以下特點:
(1)類型安全。
(2)緊湊有效的數據定義。
(3)可以和程式其他部分完美交互。
(4)運行效率高