【发布时间】:2011-06-24 11:26:28
【问题描述】:
我对 Java 中的参数传递有疑问。假设我有一个方法:
public void x(Object o)
假设我调用 x(3) 和 x("abc")。 x(3) 将花费更多时间,因为构造了一个新的 Integer,因为 3 不是 Object。假设我不能更改方法调用,只有方法实现(和参数类型),有没有办法阻止这种 Integer 构造,直到方法 x 中的某个点我知道它确实需要它?
谢谢, 特奥
【问题讨论】:
-
为什么不像 x(int) 那样重载它?
-
@John 不,不是。自动装箱通过调用
Integer.valueOf(3)方法来工作,它确实会返回一个缓存的Integer对象。如果使用new,总是会创建一个新对象;这不会得到缓存的对象。 -
@Jesper:是的。我的意思是说值 3 的整数对象被缓存了。
-
@Jesper:我删除了我的评论,因为它不清楚。
-
我的方法实际上是这样的
void x(Object o1, Object o2, ...)我有 7 个这样的签名,因为我希望我的方法能够接受 7 个参数。出于性能原因,我没有使用可变数量的参数。所以问题是我无法知道哪一个对象将是 int。
标签: java methods parameters casting