为什么我不能用简短的构造函数参数声明枚举类型?

Mar*_*ake 2 java enums constructor

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

我正在做一个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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*n B 5

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

你正在传递int给一个带有一个的构造函数short.Java不会自动转换为int,short因为可能会丢失数据.

这里可以找到一个非常好的解释- 在java中的原始类型短流程


Chr*_*ght 5

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

1)修正字段'Valor'的拼写错误为小写

private short valor;
Run Code Online (Sandbox Code Playgroud)

2)将int转换为short:

DAT ("DAT", (short)-2);
Run Code Online (Sandbox Code Playgroud)

此外,您还应将枚举类型重命名为"Tipo",这是枚举的推荐命名格式.