1

メソッドjava.lang.reflect.Constructor<T>を使用して、オブジェクトからパラメータタイプを抽出しようとしていますgetParameterTypes()

コンストラクターは次のようになります。

 public SearchParameters(boolean doStaticBoosting, boolean doRewrites, boolean doCatalogsFacet, long userId,
                            Filter catalogsFilter, boolean doCatalogsFilterTypeFacet, boolean doSocialBoosting,
                            long[] categoryFilteringId)

このメソッドを呼び出すと、次のパラメータータイプが得られます。

ここに画像の説明を入力してください

ご覧のとおり、最後のClassパラメーターは実際に混乱しており、次のように定義されています。

クラス[J

実際、私はそれをにしたいと思っていますlong[].class。後でこのオブジェクトを再構築する必要があります。もちろん、取得したパラメーター情報のみに基づいて再構築することはできません。

4

3 に答える 3

4

それはまったく台無しではありません。long[].classこれは、 :の文字列表現にすぎません。

System.out.println(long[].class); // class [J

どういうわけか文字列表現を本当に保持する必要がない限り、値をaとして保持するだけでClass<?>、すべてがうまくいくはずです。

于 2012-07-22T08:54:15.890 に答える
2

long[]それがクラスの名前です。これを試して:

    long[] longs = {1L, 2L};
    System.out.println("Name is: " + longs.getClass().getName());

これは印刷します:

Name is: [J

Class.getName()のJavadocから、すべてのプリミティブ配列クラスの名前を取得できます。

于 2012-07-22T08:54:07.113 に答える
1

class [J 名前ですlong[].classClass.getName()JavaDocをチェックしてください。

long[].classさらに、この名前を使用してのインスタンスを作成できます。 「プリミティブ配列のクラスを作成する方法」を参照してください。

于 2012-07-22T08:54:15.847 に答える