2

首先,对不起我的英语......

我正在做 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;
    }
}
4

3 回答 3

5

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

您将 a 传递int给采用short. 由于潜在的数据丢失,Java 不会自动int转换。short

可以在这里找到一个很好的解释- java中的原始类型短转换

于 2013-02-15T12:08:59.087 回答
5

您需要对上述内容进行两项更改:

1) 将您的字段“Valor”的拼写错误修复为小写

private short valor;

2)将int转换为short:

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

此外,您还应该将枚举类型重命名为“Tipo”,这是推荐的枚举命名格式。

于 2013-02-15T12:11:03.143 回答
1

默认情况下,原始数字将被视为整数,并且从整数到短整数需要强制转换。编译器不会自动执行这种类型转换 - 这是因为从较大(int)到较小(short)会引入丢失数据的风险(通过截断数字),因此编译器会强制您转换它。

所以你有两个选择:

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

或者

private short valor;
Tipo(String nombre, int valor){
    this.valor= (short)valor;
于 2013-02-15T12:20:53.643 回答