2013-01-22 31 views
9

मैं क्रय का उपयोग करके कुछ वस्तुओं (एक अनुकूलित वर्ग: सूची>) की सूची की सूची क्रमबद्ध करने की कोशिश कर रहा हूं।क्रियो सूची क्रमबद्धता

list2D; // List<List<MyClass>> which is already produced. 

Kryo k1 = new Kryo(); 
Output output = new Output(new FileOutputStream("filename.ser")); 
k1.writeObject(output, (List<List<Myclass>>) list2D); 
output.close(); 

अब तक कोई समस्या नहीं है, यह सूची में कोई त्रुटि नहीं है। लेकिन जब मैं इसे पढ़ने के लिए प्रयास करें:

Kryo k2 = new Kryo(); 
Input listRead = new Input(new FileInputStream("filename.ser")); 
List<List<Myclass>> my2DList = (List<List<Myclass>>) k2.readObject(listRead, List.class); 

मैं इस त्रुटि मिलती है:

Exception in thread "main" com.esotericsoftware.kryo.KryoException: Class cannot be created (missing no-arg constructor): java.util.List 

मैं कैसे इस समस्या को हल कर सकते हैं?

+0

आप इस समस्या को हल किया? – expert

उत्तर

3

अपने त्रुटि के अनुसार, यदि आप अपने वर्ग के लिए नो-आर्ग निर्माता जोड़ सकते हैं:

public class MyClass { 

    public MyClass() { // no-arg constructor 

    } 

    //Rest of your class.. 

} 
+0

आपके उत्तर के लिए धन्यवाद। लेकिन MyClass पहले से ही एक निर्माता जो एक स्ट्रिंग तर्क लेता है। कोई विचार? – MAZDAK

+0

शून्य आर्ग निर्माता जोड़ें या वस्तु बनाने के लिए अपने स्वयं के serializer लिखें। आप FieldSerializer का विस्तार कर सकते हैं और ओवरराइड बना सकते हैं। – NateS

5

आप List.class उपयोग नहीं कर सकते जब वस्तुओं वापस पढ़ें, क्योंकि List एक अंतरफलक है।

k2.readObject(listRead, ArrayList.class); 
+0

आप सही हैं। और हम कास्ट करने के लिए जरूरत नहीं है। Ie: 'सूची डेटा = kryo.readObject (इनपुट, ArrayList.class); ' –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^