Giống như một dự án nhỏ, tôi đã cố gắng tạo một thứ wee đọc lambdas được tuần tự hóa (cục bộ hoặc từ FTP) và gọi các hàm chạy của chúng như một phần của thử nghiệm để thử nghiệm với các liên kết tệp trong Windows (tức là mở một số loại tệp nhất định sẽ mở chúng bằng một chương trình nhất định) và không có gì, nhưng không có vấn đề gì tôi thử, nó dường như không bao giờ deserialize đúng cách.Không thể deserialize lambda
Lambda được tuyên bố như vậy
Runnable r = (Runnable & Serializable)() -> {
// blah blah
// made sure not to capture anything
};
và tuần tự sử dụng một FileOutputStream bọc bởi một [n tùy chọn] BufferedOutputStream bọc bởi một ObjectOutputStream mà không vấn đề. Tuy nhiên, khi deserialized [trong một dự án khác nhau], nó không thành công, nói rằng nó không thể tìm thấy các lớp bao quanh chứa mã để serializing nó. Tôi đã thử những thứ khác nhau như gói chúng trong một lớp serializable (w/serialVersionUID = 0L cho mục đích thử nghiệm) hoặc xác định một giao diện mở rộng Runnable và Serializable, nhưng vô ích. Có, tôi biết rằng serializing lambdas không thực sự tốt (hoặc vì vậy chúng tôi đang nói), nhưng tôi không chắc chắn làm thế nào để đi về chuyển chức năng và chương trình con vào một cái gì đó tôi có thể lưu trữ như một tập tin hoặc trong một FTP. Nếu điều này thậm chí không đúng cách, hãy nói.
Ồ, tôi đang sử dụng Eclipse Luna của bất kỳ phiên bản mới nhất nào.
Edit:
deserialized như vậy
File f = new File(somePath);
FileInputStream fish = new FileInputStream(f);
BufferedInputStream bos = new BufferedInputStream(fish); // not really necessary
ObjectInputStream ois = new ObjectInputStream(bos);
Runnable r = (Runnable) ois.readObject();
ois.close();
r.run();
Chờ bạn đang cố gắng sắp xếp một Phương thức? –
Đối tượng phương thức không thể tuần tự hóa được. Tôi đang nói về một lambda Runnable. –
Bạn có thể cho chúng tôi thấy mã tuần tự hóa/deserialization của bạn không? –