1

Java中有没有办法确定自动装箱是否完成?

例如

void functionInt(Integer i) {
//Determine if Integer was passed or int was passed. Is it possible?
}

int i = 1;
int ii = new Integer(1);
functionInt(i);
functionInt(ii);

被调用者可以区分这两个调用吗?

4

1 回答 1

4

functionInt将始终传递一个Integer,并且无法确定它是否Integer是由于自动装箱而创建的。

您可以做的是创建重载函数:

void functionInt(Integer i);
void functionInt(int i);

/编辑

如果您有以下课程:

public class Foo {
    public Foo(int primitive) {
        System.out.println("Created!");
    }
}

您可以Foo.class.getConstructor(int.class).newInstance(new Integer(5))毫无问题地拨打电话。检查是否Constructorint.class作为参数的 a 应该是相当简单的,而不是java.util.Integer如果java.util.Integer找不到带有的。

于 2012-07-15T00:18:36.303 回答