オートボクシングが行われたかどうかを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.class
java.util.Integer
java.util.Integer