Heim > Java > javaLernprogramm > Können Java-Lambdas serialisiert werden und wie können wir sie serialisierbar machen?

Können Java-Lambdas serialisiert werden und wie können wir sie serialisierbar machen?

Mary-Kate Olsen
Freigeben: 2024-12-22 09:29:28
Original
274 Leute haben es durchsucht

Can Java Lambdas Be Serialized, and How Can We Make Them Serializable?

Können Lambdas serialisiert werden?

Java-Lambdas sind nicht von Natur aus serialisierbar, was bedeutet, dass sie nicht direkt in einen Stream geschrieben und später zurückgelesen werden können. Dies kann eine Herausforderung darstellen, wenn Sie versuchen, Lambdas in verschiedenen Kontexten beizubehalten oder zu übertragen.

Serialisierungsrätsel

Bedenken Sie den folgenden Codeausschnitt:

public static void main(String[] args) throws Exception {
    File file = Files.createTempFile("lambda", "ser").toFile();
    try (ObjectOutput oo = new ObjectOutputStream(new FileOutputStream(file))) {
        Runnable r = () -> System.out.println("Can I be serialized?");
        oo.writeObject(r);
    }

    try (ObjectInput oi = new ObjectInputStream(new FileInputStream(file))) {
        Runnable r = (Runnable) oi.readObject();
        r.run();
    }
}
Nach dem Login kopieren

Beim Versuch, das Lambda-Lambda im obigen Code zu serialisieren, wird eine NotSerializableException ausgelöst. Dies liegt daran, dass Lambdas in Java standardmäßig nicht serialisierbar sind.

Elegante Lambda-Serialisierung

Um dieses Problem zu lösen und die Lambda-Serialisierung zu ermöglichen, können wir die Schnittmenge von nutzen Die in Java 8 eingeführte Funktion „Typen“ ermöglicht es uns, mehrere Grenzen für eine Umwandlung anzugeben und so das Lambda effektiv in ein Objekt umzuwandeln, das sowohl „Runnable“ als auch „Serializable“ implementiert Schnittstellen.

Hier ist der aktualisierte Code, der die Serialisierungsherausforderung elegant löst:

Runnable r = (Runnable & Serializable)() -> System.out.println("Serializable!");
Nach dem Login kopieren

Mit dieser Lösung kann das Lambda nun nahtlos in den Objektstream geschrieben und in der Datei gespeichert werden System erstellt und später deserialisiert und ausgeführt, ohne Fehler oder Ausnahmen.

Das obige ist der detaillierte Inhalt vonKönnen Java-Lambdas serialisiert werden und wie können wir sie serialisierbar machen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage