Java Autobox和方法重载

Java Autobox和方法重载,java,eclipse,Java,Eclipse,我正在使用Eclipse。我有两种方法: public void doWork(long... parms){} public void doWork(Object... parms){} 当我打电话时 doWork(1,2,3); Eclipse总是将其显示为自动装箱到doWork(Object…parms)。我确实希望在仅使用长值时调用doWork(long…parms),因为需要进行一些额外的处理 是否有使用重载方法的顺序,如果有,我可以更改它吗?因此JVM在doWork(Objec

我正在使用Eclipse。我有两种方法:

public void doWork(long... parms){}

public void doWork(Object... parms){}
当我打电话时

doWork(1,2,3);
Eclipse总是将其显示为自动装箱到
doWork(Object…parms)
。我确实希望在仅使用长值时调用
doWork(long…parms)
,因为需要进行一些额外的处理

是否有使用重载方法的顺序,如果有,我可以更改它吗?因此JVM在
doWork(Object…parms)
之前“看到”了
doWork(long…parms)

除此之外,有没有办法关闭自动装箱?我是个大男孩,我可以在需要时创建一个
新的Long()

我确实做了一个工作

public void doWorkL(long... parms){}

但是它很难看,并且违背了重载的目的。

那么
doWork(1L、2L、3L)呢?没有办法影响重载解析或禁用自动装箱(除非您想切换回Java 1.4)
doWork(1L、2L、3L)
?有时我会混入int,这会根据需要进行升级。除此之外,原语long还获得autoboxedWhich方法是由Java语言规范(请参阅)指定的,而不是由Eclipse指定的。在您的示例中,这些方法具有可变的arity参数(varargs)和
long
原语,可以通过装箱转换为
long
,后者是
对象。我想大多数人(包括我)不会100%确定是哪个方法被
doWork(1,2,3)
调用。因此,为了提高可读性,这里最好避免重载。我意识到Eclipse并没有规定这一点,它是JVM。我只是希望使用更“正确”的方法,即不需要额外JVM处理的方法。谢谢大家。