what is the most efficient way to serialize primitive type array by protostuff

362 Views Asked by At

There is no example of how to serialize primitive type array by protostuff. I also want to know which way is the most efficient. At first, I write code as follow:

long[] array = {1L, 2L, 3L};
Schema<long[]> schema = RuntimeSchema.getSchema(long[].class);
ProtobufIOUtil.toByteArray(array, schema, buffer);

the exception is:

Exception in thread "main" java.lang.RuntimeException: The root object can        neither be an abstract class nor interface: "[J
at io.protostuff.runtime.RuntimeSchema.createFrom(RuntimeSchema.java:210)
at io.protostuff.runtime.RuntimeSchema.createFrom(RuntimeSchema.java:187)
at io.protostuff.runtime.IdStrategy.newSchema(IdStrategy.java:116)
at io.protostuff.runtime.DefaultIdStrategy$Lazy.getSchema(DefaultIdStrategy.java:708)
at io.protostuff.runtime.RuntimeSchema.getSchema(RuntimeSchema.java:149)
at io.protostuff.runtime.RuntimeSchema.getSchema(RuntimeSchema.java:140)
at kryo.demo.UserCompareKryoAndProtostuff.testProtostuff(UserCompareKryoAndProtostuff.java:66)
at kryo.demo.UserCompareKryoAndProtostuff.main(UserCompareKryoAndProtostuff.java:31)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)

I read the ArraySchemas code quickly, I don't get any idea.

0

There are 0 best solutions below