2

JDK 1.6を使用していますが、次のスニペットの2行目で、Eclipseでコンパイルエラーが発生します。

long[] css = new long[]{1, 2, 3};
Object[] objs = Arrays.copyOf(ccs, ccs.length, Object[].class );

エラーは次のとおりです。配列型のメソッドcopyOf(long []、int)は、引数(long []、int、Class)には適用できません。

鋳造が必要です

org.hibernate.criterion.Restrictions.in("PropertyName", objs );

アイデアや推奨されるアプローチはありますか?

TIA。

4

2 に答える 2

9

Javaではそれを行うことはできません。longはプリミティブ型であり、そのため拡張されませんObjectLongのラッパー クラスである は、longにキャストできますObjectLong[]aから aを作成するには、 のlong[]すべての値をlong[]調べて、それを にコピーする必要がありLong[]ます。

long[] primitiveLong;
Long[] wrappedLong = new Long[primitiveLong.length];
for (int i=0; i<primitiveLong.length; i++) {
    wrappedLong[i] = primitiveLong[i];
}

次に、次の配列にキャストできますObject

Object[] objs = wrappedLong;

または、タイプの WrappedLong をObject直接作成して、キャストを必要としないようにすることもできます。

于 2012-12-13T21:30:53.173 に答える
3

これを正確に行うApacheCommonsを使用してくださいArrayUtils.toObject

于 2012-12-13T21:27:16.127 に答える