0

さまざまなメソッドを呼び出していますが、パラメーターの整数値はすべてデフォルトで int になり、1 や 0 などの値であっても、型キャスト以外にこれを解決するためにすべきことはありますか? これがコードの例です

public class Launch {
    public static void main(String[] args) {
        CoordinateHandler handler = new Handler();
        short x = 3901;
        short y = 5921;
        byte h = 2;
        handler.toCoordinates(x, y, h, "modern");
    }
}
public class CoordinateHandler extends CoordinateMain {
    public void toCoordinates(short absX, short absY, byte height, String type) {
        if (type.equals("modern")) {
            super.toCoordinates(absX, absY, height);
        } else {
            coordinateUpdateEvent(absX, absY, height, type);
        }
    }
}

short x、short y、および byte h の行で精度が失われる可能性があるというコンパイル エラーが発生し、toCoordinates(int, int, int, String) can't be applied to toCoordinates というコンパイル エラーも発生します。 (ショート、ショート、バイト、文字列)

4

3 に答える 3

0

とにかく、JVMは内部的にショートにintを使用していると思いますので、ショートの代わりにそれらを使用することもできます。

于 2012-10-14T12:48:50.347 に答える
0

あなたが書いCoordinateHandler handler = new Handler(); ている Handler() が同じメソッド署名を持っていることは確かですか? そうあるべきだと思いますCoordinateHandler handler = new CoordinateHandler();

于 2012-10-14T12:53:09.727 に答える
0

これらの行は真実ではありません

short x = 3901;
short y = 5921;
byte h = 2;

コンパイラ エラーが発生します。後続のメソッド呼び出しについても同様です。これは完全に合法で正しい Java です。LHS の型に自動的にキャストされるリテラル値からではなく、変数またはパラメーターから代入するなど、これらの問題を引き起こすリテラル コードを表示していない可能性があります。

実際にパラメーターから代入している場合int、コンパイラはまったく正しいです。代入は実際にオーバーフローを引き起こす可能性があります。

于 2012-10-14T12:55:44.960 に答える