介面和列舉在方法中的區別

文采杰出發表於2024-04-07

列舉型別較傳統定義常量的方式,除了具有引數型別檢測的優勢之外,還具有其他方面的優勢。

使用者可以將一個列舉型別看作是一個類,它繼承於 java.lang.Enum 類,當定義一個列舉型別時,每一個列舉型別成員都可以看作是列舉型別的一個例項,這些列舉型別成員都預設被final、 public、static修飾,所以當使用列舉型別成員時直接使用列舉型別名稱呼叫列舉型別成員即可。

package com.example.enumerate;


import javax.swing.*;

//將常量放置在介面中
interface Constants{
    public static final int Constatnts_A=1;
    public static final int Constatnts_B=12;
}

//將常量放置在列舉中
public class ConstantsTest{
    enum Constants2{
        Constants_A, Constants_B
    }

    //使用介面定義常量
/*    public static void doit(int c){
        switch (1){
            case Constants.Constatnts_A:
                System.out.println("doit() Constants_A");
                break;
            case Constants.Constatnts_B:
                System.out.println("doit() Constants_B");
                break;
        }
    }*/

    //定義一個引數物件是列舉型別的方法
    public static void doit2(Constants2 c){
        switch (c){
            case Constants_A:
                System.out.println("doit()1 Constants_A");
                break;
            case Constants_B:
                System.out.println("doit2()1 Constants_B");
                break;
        }
    }

    public static void main(String[] args) {
        //使用介面中定義的常量
//        ConstantsTest.doit(Constants.Constatnts_A);
        //使用列舉型別中的常量
        ConstantsTest.doit2(Constants2.Constants_A);
//        使用列舉型別中的常量
        ConstantsTest.doit2(Constants2.Constants_B);

        //備註:該方法接受介面中定義的常量引數
//        ConstantsTest.doit(1);

        //備註:因為方法只接受列舉型別的常量作為引數
//        ConstantsTest.doit2(3);
        
    }
}

相關文章