将整数数组转换为java中的对象数组

时间:2012-12-13 21:26:23

标签: java arrays casting

我使用的是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。

2 个答案:

答案 0 :(得分:9)

你不能在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类型的裹长,这样您就不需要施法。

答案 1 :(得分:3)

使用Apache Commons'ArrayUtils.toObject来完成这一步。