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);
被调用者可以区分这两个调用吗?
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);
被调用者可以区分这两个调用吗?
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
作为参数的 a 应该是相当简单的,而不是java.util.Integer
如果java.util.Integer
找不到带有的。