簡體   English   中英

調用方法 java

[英]Calling methods java

我有一個枚舉,每個枚舉都必須有特定的字段,比如價格,不會被修改,我想創建一個 class 來獲取這些字段,在這種情況下我該怎么辦? 如何使用枚舉調用 class 或者我能做什么?

你可以試試這個:

public enum SalaryHeadMasterEnum {

    BASIC_PAY("basic pay"),
    MEDICAL_ALLOWANCE("Medical Allowance");

    private String name;

    private SalaryHeadMasterEnum(String stringVal) {
        name=stringVal;
    }
    public String toString(){
        return name;
    }

    public static String getEnumByString(String code){
        for(SalaryHeadMasterEnum e : SalaryHeadMasterEnum.values()){
            if(e.name.equals(code)) return e.name();
        }
        return null;
    }
}

現在您可以使用下面的代碼按值檢索枚舉

SalaryHeadMasterEnum.getEnumByString("Basic Pay")

使用下面的代碼將 ENUM 作為字符串

SalaryHeadMasterEnum.BASIC_PAY.name()

使用下面的代碼獲取枚舉的字符串值

SalaryHeadMasterEnum.BASIC_PAY.toString()

枚舉是一種特殊類型的 class,它表示一組 fianl 值。 如果您想獲得該字段,那么您可以創建類似的實例

 Price myVar = Price.Low;
 System.out.println(myVar);

thakre 的答案是正確的。 我將重申以更直接地解決問題的細節。

每個枚舉都必須有特定的字段,例如價格,

所以用這樣一個字段定義你的枚舉。

enum Flavor {
    private BigDecimal price ;
}

將用於該字段的值傳遞給每個枚舉 object 的構造函數。

enum Flavor {
    // Enum objects. 
    VANILLA( 2 ) , CHOCOLATE( 2 ) , LAVENDER( 4 )
    
    // Member fields.
    private int price ;

    // Constructor.
    public Flavor ( int price ) {
        this.price = price ;
    }
}

我想創建一個 class 來獲取這個字段,在這種情況下我該怎么辦?

不需要另一個 class。 只需在枚舉上添加一個 getter 方法。

enum Flavor {
    // Enum objects. 
    VANILLA( 2 ) , CHOCOLATE( 2 ) , LAVENDER( 4 )
    
    // Member fields.
    private int price ;

    // Constructor.
    public Flavor ( int price ) {
        this.price = price ;
    }

    // Getters. 
    public int getPrice() { return this.price ; } 
}

用法:

int extendedCost = quantity * Flavor.VANILLA.getPrice() ; 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM