Java整数默认为int

时间:2012-10-14 12:44:45

标签: java compiler-errors

我正在调用各种方法,并且参数Integer值都默认为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)不能应用于坐标(短,短,字节,字符串)

3 个答案:

答案 0 :(得分:0)

相信 JVM在内部使用ints for short,所以你也可以使用它们而不是短裤。

答案 1 :(得分:0)

你在写CoordinateHandler handler = new Handler(); 你确定Handler()有相同的方法签名吗?我认为它应该是CoordinateHandler handler = new CoordinateHandler();

答案 2 :(得分:0)

这些行

并非如此
short x = 3901;
short y = 5921;
byte h = 2;

导致任何编译器错误;后续方法调用也是如此。这是完全合法且正确的Java。您可能没有显示导致这些问题的文字代码,例如从变量或参数赋值而不是从文字值中分配,这会自动转换为LHS的类型。

如果您确实从int参数赋值,那么编译器就是正确的:您的赋值确实可能导致溢出。