首先,对不起我的英语......
我正在做一个Enum类型,但我做不到,因为我正在使用tipo(String nombre, short valor)
为什么我必须使用tipo(String nombre, int valor)
?使用 int 代替简短?
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;
}
}
答案 0 :(得分:5)
尝试DAT ("DAT", (short)-2);
您正在将int
传递给带short
的构造函数。 Java不会从int
自动转换为short
,因为可能会丢失数据。
答案 1 :(得分:5)
您需要对上述内容进行两项更改:
1)修正字段'Valor'的拼写错误
private short valor;
2)将int转换为short:
DAT ("DAT", (short)-2);
此外,您还应将枚举类型重命名为'Tipo',这是枚举的推荐命名格式。
答案 2 :(得分:1)
默认情况下,原始数字将被视为整数,从整数变为短整数需要强制转换。编译器不会自动执行此类型转换 - 这是因为从较大(int)到较小(short)会导致丢失数据的风险(通过截断数字),因此编译器会强制您进行转换。 / p>
所以你有两个选择:
DAT("DAT", (short)-1);
或
private short valor;
Tipo(String nombre, int valor){
this.valor= (short)valor;