[英]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.