我使用的是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。
答案 0 :(得分:9)
你不能在java中这样做。 long
是一种原始类型,因为它不会扩展Object
。 Long
是long
的包装类,可以并且可以转换为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
来完成这一步。