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);
        }
    }
}

我会收到一个编译错误,说在短 x、短 y 和字节 h 的行上可能会丢失精度,我还会收到一个编译错误,说 toCoordinates(int, int, int, String) 不能应用于 toCoordinates (短,短,字节,字符串)

4

3 回答 3

0

相信JVM 在内部无论如何都使用整数作为短裤,所以你不妨使用它们而不是短裤。

于 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 回答