簡體   English   中英

Java Enum構造函數未定義

[英]Java Enum Constructor Undefined

為什么我收到錯誤“構造函數未定義”是否在我的eclipse IDE中? 我的代碼有問題嗎?

public enum EnumHSClass {
    PALADIN ("Paladin"),ROUGE("ROUGE");
}

如果您希望枚舉具有參數,則需要為這些參數聲明構造函數和字段。

public enum EnumHSClass {
    PALADIN ("Paladin"),ROUGE("ROUGE");
    private final String name;
    private EnumHSClass(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

你需要在你的枚舉中提供一個constructor ,如:

public enum EnumHSClass {

    PALADIN("Paladin"), ROUGE("ROUGE");

    String value;

    EnumHSClass(String value) {
        this.value = value;
    }
}

注意:枚舉類型的構造函數必須是包私有或私有訪問。 它會自動創建在枚舉主體開頭定義的常量。 您不能自己調用​​枚舉構造函數。

參考: http//docs.oracle.com/javase/tutorial/java/javaOO/enum.html

枚舉也有構造函數,但只有私有或默認可見性:

public enum EnumHSClass {
    PALADIN ("Paladin"),ROUGE("ROUGE");
    private EnumHSClass(String s) {
        // do something with s
    }
}

您可能希望聲明一個字段並為其創建一個getter,並在構造函數中設置該字段。

另請注意,枚舉實例的名稱可通過所有枚舉所具有的(隱式) name()方法免費獲得 - 也許您可以使用它。

您的代碼應如下所示:

public enum EnumHSClass {

    PALADIN ("Paladin"), ROUGE("ROUGE");

    private String name;

    private  EnumHSClass(String name) {
        this.name = name;
    } 
}
public enum Days {
    MONDAY(1), TUESDAY(2);
    int val;
    Days (int val) {
        this.val = val;
    }
}

暫無
暫無

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

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