我正在使用JDK 1.6,但以下代码段的第二行给出了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。

最佳答案

您无法在Java中做到这一点。 long是原始类型,因此不会扩展ObjectLonglong的包装器类,确实可以并将其强制转换为Object。要从Long[]创建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;


或者甚至可以直接制作Object类型的wrappedLong,这样就不需要强制转换。

10-08 10:50
查看更多