2

まず、私の英語でごめんなさい...

列挙型を実行していますが、使用しているため実行できません tipo(String nombre, short valor)

なぜ使用しなければならないのtipo(String nombre, int valor)ですか?shortの代わりに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;
    }
}
4

3 に答える 3

5

上記に対して、次の 2 つの変更を加える必要があります。

1) フィールド「Valor」のタイプミスを小文字に修正します

private short valor;

2) int を short にキャストします。

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

さらに、列挙型の名前を「Tipo」に変更する必要があります。これは、列挙型の推奨される命名形式です。

于 2013-02-15T12:11:03.143 に答える
5

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

intを受け取るコンストラクターに を渡していますshortintデータが失われる可能性があるため、Java は from からto に自動キャストしませんshort

これの非常に良い説明はここにあります - Javaでのプリミティブ型ショートキャスト

于 2013-02-15T12:08:59.087 に答える
1

デフォルトでは、プリミティブ数は整数として扱われ、整数から短整数に変換するにはキャストが必要です。コンパイラは、この型のキャストを自動的に実行しません。これは、大きい (int) から小さい (short) に変更すると、(数値が切り捨てられることによって) データが失われるリスクが生じるため、コンパイラがキャストを強制するためです。

したがって、次の 2 つの選択肢があります。

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

また

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