Tôi đã tìm kiếm 2 giờ để tìm một ví dụ đơn giản howto sử dụng Kryo để sắp xếp một đối tượng và deserialize nó một lần nữa. Mỗi đoạn mã tôi tìm thấy không hoạt động/khớp.vui lòng cung cấp mẫu mã Kryo
Có mẫu/nguồn nào ở đó không, ví dụ: Kryo 2.23.0?
Tôi đã tìm kiếm 2 giờ để tìm một ví dụ đơn giản howto sử dụng Kryo để sắp xếp một đối tượng và deserialize nó một lần nữa. Mỗi đoạn mã tôi tìm thấy không hoạt động/khớp.vui lòng cung cấp mẫu mã Kryo
Có mẫu/nguồn nào ở đó không, ví dụ: Kryo 2.23.0?
Cú pháp của Kryo tương đối giống với tuần tự hóa java. Một đối tượng kryo được tạo ra cũng như một đầu ra/đầu vào và một trong những phương pháp kryos được sử dụng để thực hiện các serialization/deserialisation
kryo.writeClassAndObject(output, object); //for if the concrete class isn't known (can be null)
kryo.writeObjectOrNull(output, someObject); //if the object could be null
kryo.writeObject(output, someObject); //can't be null and concrete class is known
Mỗi phòng trong số viết được ghép nối với một số đã đọc
SomeClass object = (SomeClass)kryo.readClassAndObject(input);
SomeClass someObject = kryo.readObjectOrNull(input, SomeClass.class);
SomeClass someObject = kryo.readObject(input, SomeClass.class);
Sau đây là một ví dụ sử dụng writeClassAndObject rằng serialises một Vector3d vào một tập tin và ngược lại.
public class KryoTest {
public static void main(String[] args){
Vector3d someObject=new Vector3d(1,2,3);
//serialise object
//try-with-resources used to autoclose resources
try (Output output = new Output(new FileOutputStream("KryoTest.ser"))) {
Kryo kryo=new Kryo();
kryo.writeClassAndObject(output, someObject);
} catch (FileNotFoundException ex) {
Logger.getLogger(KryTest.class.getName()).log(Level.SEVERE, null, ex);
}
//deserialise object
Vector3d retrievedObject=null;
try (Input input = new Input(new FileInputStream("KryoTest.ser"))){
Kryo kryo=new Kryo();
retrievedObject=(Vector3d)kryo.readClassAndObject(input);
} catch (FileNotFoundException ex) {
Logger.getLogger(KryTest.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Retrieved from file: " + retrievedObject.toString());
}
}
Tất cả tài liệu cập nhật đã chuyển sang github ngay bây giờ; https://github.com/EsotericSoftware/kryo#quickstart
Một phiên bản đơn giản:
Kryo kryo = new Kryo();
// #### Store to disk...
Output output = new Output(new FileOutputStream("file.bin"));
SomeClass someObject = ...
kryo.writeObject(output, someObject);
output.close();
// ### Restore from disk...
Input input = new Input(new FileInputStream("file.bin"));
SomeClass someObject = kryo.readObject(input, SomeClass.class);
input.close();
Cần lưu ý rằng ví dụ này yêu cầu Java 7. –