2016-10-05 5 views
1

Я пытаюсь написать список определенного типа с использованием сериализатора Kryo, но я получаю ошибки, когда пытаюсь его прочитать/записать. Я использую источник предоставленного апача искры для KryoRegistratorКак написать список определенного типа с использованием сериализатора kryo

Списка Я пытаюсь написать это типа List<A>, которые могут быть ArrayList или любого другого типа списка

Код

Class FakeRegsitrator implements KryoRegistrator{ 

    @Override 
    public void registerClasses(Kryo kryo) { 
     CollectionSerializer listSerializer = new CollectionSerializer(); 
     listSerializer.setElementClass(A.class, kryo.getSerializer(A.class)); 
     listSerializer.setElementsCanBeNull(false); 

     kryo.register(A.class, new Serializer<A>(true, true) { 
     public void write(Kryo kryo, Output output, A a) { 
      output.writeLong(a.getFieldA) 
      output.WriteString(a.getFieldB) 
     } 
     public A read(Kryo kryo, Input input, Class type) { 
      return new A(input.readLong(), input.readString()) 
     } 
    } 
} 

Что же я отсутствует здесь?

ответ

0

я смог получить его работу путем регистрации Arraylist.class

код:

kryo.register(ArrayList.class); 

in read method use 
kryo.readObject(input, ArrayList.class); 

in write method use 
kryo.writeObject(output, entry.getArchivePortions()); 

 Смежные вопросы

  • Нет связанных вопросов^_^