オートボクシングが行われたかどうかを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);
呼び出し先はこれら 2 つの呼び出しを区別できますか?
オートボクシングが行われたかどうかを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);
呼び出し先はこれら 2 つの呼び出しを区別できますか?
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.classjava.util.Integerjava.util.Integer