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

呼び出し先はこれら 2 つの呼び出しを区別できますか?

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))問題なく通話できます。を持つものが見つからないかどうかではなく、パラメータとしてConstructor持つをチェックするのはかなり簡単なはずです。int.classjava.util.Integerjava.util.Integer

于 2012-07-15T00:18:36.303 に答える