簡體   English   中英

為什么我不能用簡短的構造函數參數聲明枚舉類型?

[英]Why I can't declare Enum Type with short constructor argument?

首先,對不起我的英語......

我正在做一個Enum類型,但我做不到,因為我正在使用tipo(String nombre, short valor)

為什么我必須使用tipo(String nombre, int valor) 使用int而不是short

public enum Tipo {

    // The constructor (String, int) is undefined
    DAT ("DAT", -2);



    private String nombre;
    private short valor;

    tipo(String nombre, short valor){
        this.nombre = nombre;
        this.valor = valor;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public short getValor() {
        return valor;
    }

    public void setValor(short valor) {
        this.valor = valor;
    }
}

嘗試DAT ("DAT", (short)-2);

您正在將一個int傳遞給一個short的構造函數。 由於可能會丟失數據,Java不會從int自動轉換為short

這里可以找到一個非常好的解釋- 在java中的原始類型短流程

您需要對上述內容進行兩項更改:

1)修正字段'Valor'的拼寫錯誤為小寫

private short valor;

2)將int轉換為short:

DAT ("DAT", (short)-2);

此外,您還應將枚舉類型重命名為“Tipo”,這是枚舉的推薦命名格式。

默認情況下,原始數字將被視為整數,從整數變為短整數需要強制轉換。 編譯器不會自動執行這種類型的轉換 - 這是因為從較大的(int)到較小的(short)引入了丟失數據的風險(通過截斷數字),因此編譯器會強制您進行轉換。

所以你有兩個選擇:

DAT("DAT", (short)-1);

要么

private short valor;
Tipo(String nombre, int valor){
    this.valor= (short)valor;

暫無
暫無

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

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