接受长值的java方法是否应该接受整数对象?

接受长值的java方法是否应该接受整数对象?,java,long-integer,Java,Long Integer,我有一个方法,它接受一个长的原语值并基于它进行一些处理。它最初是int,后来更改了。实际调用此方法的代码是使用Integer调用此方法,这在前面是可以的,因为java 但是,在将其更改为long之后,我的代码在生成时不会显示任何编译时错误。现在,如果我将它改为int而不是Integer,它会显示编译时错误,但不会显示Integer 为什么会这样 编辑: class ABC { public Customer customerExists(long cid) throws Exception

我有一个方法,它接受一个长的原语值并基于它进行一些处理。它最初是int,后来更改了。实际调用此方法的代码是使用Integer调用此方法,这在前面是可以的,因为java

但是,在将其更改为long之后,我的代码在生成时不会显示任何编译时错误。现在,如果我将它改为int而不是Integer,它会显示编译时错误,但不会显示Integer

为什么会这样

编辑:

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中的编译时错误。