我正在调用各种方法,并且参数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)不能应用于坐标(短,短,字节,字符串)
答案 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
参数赋值,那么编译器就是正确的:您的赋值确实可能导致溢出。