2

我使用的是 JDK 1.6,但以下代码段中的第二行在 Eclipse 中给出了编译错误:

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

错误是:Arrays 类型中的方法 copyOf(long[], int) 不适用于参数 (long[], int, Class)

铸造是必需的

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

有什么想法或推荐的方法吗?

TIA。

4

2 回答 2

9

你不能在java中做到这一点。long是原始类型,因此不扩展ObjectLong, 它是 , 的包装类long,并且可以强制转换为Object. 要从 a 创建一个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,这样您就不需要强制转换。

于 2012-12-13T21:30:53.173 回答
3

使用 Apache Commons'ArrayUtils.toObject正是这样做的。

于 2012-12-13T21:27:16.127 回答