2

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.

Amit Joshi
  • 15,448
  • 21
  • 77
  • 141
yuhongye
  • 21
  • 3

0 Answers0