簡體   English   中英

根據枚舉值執行操作

[英]Executing action depending on enum value

我正在嘗試根據枚舉值檢索一個值。 基本上,假設我有以下枚舉:

    private enum Auth{

    KEY, PASSWORD, MAIL;    

    public String get(){
        return "";
    }
}

通過執行 Auth.KEY.get() 它將返回“mykey”,而 Auth.MAIL.get() 將返回“mymail” 我用谷歌搜索了一下但找不到答案,我之前沒有嘗試任何東西因為我完全不知道如何開始。

只需添加一個字段和構造函數,如java-docs中所述

示例代碼:

enum Auth {

    KEY("myKey"), PASSWORD("myPass"), MAIL("myMail");    

    private final String identifier;

    Auth(String identifier) {
        this.identifier = identifier;
    }

    public String get(){
        return identifier;
    }
}

另請注意,有name()toString()可能有用:另請參閱java-enum-why-use-tostring-instead-of-name

enum Auth{
private enum Auth{
String value;
KEY("mykey"), PASSWORD("mypassword"),    MAIL(mymail");    

Auth(String value){
thia.value=value;
}
public String get(){
    return value;
}
}

您需要有一個包含枚舉名稱的字符串和一個設置它的構造函數。 然后 get 方法返回名稱如下。

 private enum Auth{

    KEY, PASSWORD, MAIL;    
    string name;
    public Auth(string nm) {
      name = nm;
    }
    public String get(){
        return name;
    }
 }

盡管我強烈建議不要使用以下機制從枚舉值中獲取諸如硬編碼String之類的簡單內容,而是將其用於關聯特定行為,例如java.util.concurrent.TimeUnit ,但這是實現方法:

private enum Auth {

    KEY {
        public String get() {
            return "mykey";
        } 
    },

    PASSWORD {
        public String get() {
            return "mypassword";
        } 
    },

    MAIL {
        public String get() {
            return "mymail";
        } 
    };

    public abstract String get();

}

暫無
暫無

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

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