接受长值的java方法是否应该接受整数对象?
我有一个方法,它接受一个长的原语值并基于它进行一些处理。它最初是int,后来更改了。实际调用此方法的代码是使用Integer调用此方法,这在前面是可以的,因为java 但是,在将其更改为long之后,我的代码在生成时不会显示任何编译时错误。现在,如果我将它改为int而不是Integer,它会显示编译时错误,但不会显示Integer 为什么会这样 编辑:接受长值的java方法是否应该接受整数对象?,java,long-integer,Java,Long Integer,我有一个方法,它接受一个长的原语值并基于它进行一些处理。它最初是int,后来更改了。实际调用此方法的代码是使用Integer调用此方法,这在前面是可以的,因为java 但是,在将其更改为long之后,我的代码在生成时不会显示任何编译时错误。现在,如果我将它改为int而不是Integer,它会显示编译时错误,但不会显示Integer 为什么会这样 编辑: class ABC { public Customer customerExists(long cid) throws Exception
class ABC {
public Customer customerExists(long cid) throws Exception {
...
}
}
class XYZ {
public void method() {
Integer customerId = null;
...
customerExists(customerId);
...
}
}
我认为这应该是一个编译时错误,但事实并非如此
Java版本-
openjdk版本“1.8.0_31”
OpenJDK运行时环境(build 1.8.0_31-b13)
OpenJDK 64位服务器虚拟机(构建25.31-b07,混合模式)您可以测试一些更改,要改进代码,请查看以下代码:
class ABC {
public Customer customerExists(Number cid) throws Exception {
...
if( cid instanceof Integer) {
cid.intValue().....
}
}
}
class XYZ {
public void method() {
Integer customerId = null;
...
customerExists(customerId);
...
}
}
所以你可以传递任何类型的数字,看看这个类,转换成你需要的任何类型的数字。(
您可以测试一些更改,要改进代码,请查看以下代码:
class ABC {
public Customer customerExists(Number cid) throws Exception {
...
if( cid instanceof Integer) {
cid.intValue().....
}
}
}
class XYZ {
public void method() {
Integer customerId = null;
...
customerExists(customerId);
...
}
}
所以你可以传递任何类型的数字,看看这个类,转换成你需要的任何类型的数字
你能给出一个有问题的示例代码吗???另外,如果你能指定你的JDK版本也会有帮助…我无法复制这个…代码,请。还有确切的编译错误。你所描述的不可能发生!3票赞成一个问题,因为没有确切的错误和用于复制的代码。Addi从逻辑上讲,它描述了一个不可能的场景?Phhh…所以变得很奇怪。你可以将窄类型传递给采用宽类型的方法。例如,int/整数可以传递给接受long/long的方法。反之亦然。你的方法有
long
参数,还是long
参数?它们不是同一个瘦参数g、 你能给出一个有问题的示例代码吗???另外,如果你能指定你的JDK版本也会有帮助…我无法复制这个…代码,请。还有确切的编译错误。你所描述的不会发生!3次投票赞成一个问题,因为没有确切的错误和用于复制的代码。Additi通常,它描述了一个不可能的场景?Phhh…因此变得很奇怪。您可以将窄类型传递给采用宽类型的方法。例如,int/Integer可以传递给接受long/long的方法。反之亦然。您的方法是否有long
参数,或者long
参数?它们不是一回事。我不是在要求任何变通方法或解决方案。我想知道,既然java是强类型的,为什么它不是java中的编译时错误。我不是在要求任何变通方法或解决方案。我想知道,既然java是强类型的,为什么它不是java中的编译时错误。