2016-10-05 4 views
1

Ich versuche, eine Liste eines bestimmten Typs mit Kryo Serializer zu schreiben, aber ich bekomme Fehler, wenn ich versuche, es zu lesen/schreiben. Ich verwende Quelle für KryoRegistrator von Apache Funken bereitgestelltWie schreibe ich eine Liste eines bestimmten Typs mit kryo Serializer

Liste I ist vom Typ List<A> zu schreiben versuchen, die

-Code

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()) 
     } 
    } 
} 

eine Arraylist oder jede andere Art von Liste sein könnte Was ist ich hier fehlt?

Antwort

0

Ich konnte es durch die Registrierung Arraylist.class

Code zum Laufen bringen:

kryo.register(ArrayList.class); 

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

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