确定AutoBoxing是否已完成

时间:2012-07-15 00:14:30

标签: java autoboxing

在Java中是否有办法确定Autoboxing是否已完成?

例如

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);

被叫方可以区分这两个电话吗?

1 个答案:

答案 0 :(得分: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))。如果找不到Constructor int.class作为参数而不是java.util.Integer,如果找不到java.util.Integer的{​​{1}},则应该相当简单。