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

标签 java constructor enums

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

我正在做一个枚举类型,但我做不到,因为我正在使用 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,因为可能会丢失数据。

对此可以找到很好的解释 here - primitive type short casting in java

关于java - 为什么我不能用短构造函数参数声明枚举类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14894353/

相关文章:

c++ - 如果构造函数内部的其他实例化失败,构造是否失败

c++ - const_cast 类构造函数中的 const 成员

c - C 中的枚举迭代

c++ - 防止在 C++ 中将整数转换为枚举

c# - 自定义字典 ​​TryGetValue 找不到键

c++ - 有条件地禁用复制构造函数

java - Spring 集成网关 - BeanCreationException

java - 创建一个元素 设置与创建单个元素列表相同的方式(如果适用)

java - MappedSuperclass 扩展另一个 MappedSuperclass

java - SortedSet<TestClass> 比较一个字段的相等性并按另一个字段排序