Kla*_*Nji 2 java arrays casting
我使用的是JDK 1.6,但下面代码片段中的第二行在Eclipse中出现了编译错误:
long[] css = new long[]{1, 2, 3};
Object[] objs = Arrays.copyOf(ccs, ccs.length, Object[].class );
Run Code Online (Sandbox Code Playgroud)
错误是:类型Arrays中的方法copyOf(long [],int)不适用于参数(long [],int,Class)
铸造是必需的
org.hibernate.criterion.Restrictions.in("PropertyName", objs );
Run Code Online (Sandbox Code Playgroud)
任何想法或推荐的方法?
TIA.
你不能在java中这样做.long是一种原始类型,因为它没有扩展Object.Long,这是一个包装类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];
}
Run Code Online (Sandbox Code Playgroud)
然后你可以把它投射到一个数组Object:
Object[] objs = wrappedLong;
Run Code Online (Sandbox Code Playgroud)
或者您甚至可以Object直接制作包裹类型的龙,这样您就不需要进行铸造.