Heim > Java > javaLernprogramm > Gruppieren und entmarshalieren Sie Datenobjekte mithilfe der neuen Records-Klasse in Java 13

Gruppieren und entmarshalieren Sie Datenobjekte mithilfe der neuen Records-Klasse in Java 13

WBOY
Freigeben: 2023-07-31 23:33:28
Original
775 Leute haben es durchsucht

Verwenden Sie die neue Records-Klasse in Java 13, um Datenobjekte zu marshalieren und zu entmarshalieren.

Während Java sich weiterentwickelt, führt jede neue Version einige neue Funktionen und Verbesserungen ein. In Java 13 wurde eine neue Records-Klasse eingeführt, die uns eine übersichtliche Möglichkeit bietet, unveränderliche Datenobjekte zu deklarieren und zu verwenden. In diesem Artikel stellen wir die Verwendung der Records-Klasse vor und demonstrieren anhand von Beispielcode, wie die Records-Klasse zum Marshallen und Unmarshalieren von Datenobjekten verwendet wird.

Lassen Sie uns zunächst das Konzept des Records-Kurses verstehen. Die Records-Klasse ist ein neuer Typ, der sowohl eine Klasse als auch eine Schnittstelle ist und zur Deklaration unveränderlicher Datenobjekte verwendet wird. Die Records-Klasse stellt Standardimplementierungen bereit, einschließlich Methoden wie equal(), hashCode() und toString(). Darüber hinaus erstellt die Records-Klasse automatisch einen Konstruktor zum Initialisieren von Datensätzen. Im Gegensatz zu gewöhnlichen Klassen kann die Records-Klasse nicht erweitert werden und darf keine eigenen Felder und Methoden definieren.

Lassen Sie uns ein einfaches Beispiel geben, um die Verwendung der Records-Klasse zu veranschaulichen. Angenommen, wir haben ein Person-Objekt, das Name und Alter enthält.

public record Person(String name, int age) {}
Nach dem Login kopieren

Der obige Code definiert eine Person-Klasse, die mithilfe der Records-Klasse deklariert wird. Die Person-Klasse verfügt über zwei Felder: Name und Alter. Jetzt können wir ein Person-Objekt erstellen und auf seine Felder zugreifen.

Person person = new Person("Alice", 30);
System.out.println(person.name()); // 输出:Alice
System.out.println(person.age()); // 输出:30
Nach dem Login kopieren

Wie oben gezeigt, können wir den Feldwert des Person-Objekts über die Zugriffsmethoden (name() und age()) abrufen. Darüber hinaus stellt die Records-Klasse auch eine Standardmethode toString() bereit, damit wir das Person-Objekt direkt drucken können.

Als nächstes schauen wir uns ein komplexeres Beispiel an. Angenommen, wir haben ein Student-Objekt, das das Person-Objekt erweitert und das Schulfeld hinzufügt.

public record Student(String name, int age, String school) implements Person {}
Nach dem Login kopieren

Der obige Code definiert eine Student-Klasse, die von der Person-Klasse erbt und ein Schulfeld hinzufügt. Gleichzeitig verwenden wir das Schlüsselwort „implements“, um anzugeben, dass die Student-Klasse die Implementierungsklasse der Person-Schnittstelle ist. Mit der Records-Klasse deklarierte Objekte können wie gewöhnliche Objekte einer Klassenvererbung und Schnittstellenimplementierung unterzogen werden.

Sehen wir uns nun an, wie man Datenobjekte mit der Records-Klasse marshallt und unmarshallt. Angenommen, wir möchten das Person-Objekt in eine JSON-Zeichenfolge konvertieren und in einer Datei speichern.

import com.fasterxml.jackson.databind.ObjectMapper;

public class PersonSerialization {
    public static void main(String[] args) throws Exception {
        Person person = new Person("Alice", 30);
        
        // 编组为JSON字符串
        ObjectMapper mapper = new ObjectMapper();
        String jsonString = mapper.writeValueAsString(person);
        
        // 保存为文件
        FileWriter writer = new FileWriter("person.json");
        writer.write(jsonString);
        writer.close();
        
        System.out.println("Person对象已编组为JSON并保存到文件中");
    }
}
Nach dem Login kopieren

Der obige Code verwendet die ObjectMapper-Klasse in der Jackson-Bibliothek, um Person-Objekte in einen JSON-String zu marsalieren und ihn in einer Datei zu speichern. Durch Aufrufen der Methode „mapper.writeValueAsString(person)“ können wir das Person-Objekt in einen JSON-String konvertieren. Anschließend verwenden wir die FileWriter-Klasse, um den JSON-String in die Datei zu schreiben.

Der Vorgang des Auflösens der Gruppierung ist das Gegenteil der Gruppierung. Angenommen, wir lesen einen JSON-String aus einer Datei und entpacken ihn in ein Person-Objekt.

import com.fasterxml.jackson.databind.ObjectMapper;

public class PersonDeserialization {
    public static void main(String[] args) throws Exception {
        // 从文件中读取JSON字符串
        String jsonString = Files.readString(Path.of("person.json"));
        
        // 解组为Person对象
        ObjectMapper mapper = new ObjectMapper();
        Person person = mapper.readValue(jsonString, Person.class);
        
        System.out.println("JSON已解组为Person对象:" + person);
    }
}
Nach dem Login kopieren

Der obige Code verwendet die Files-Klasse, um einen JSON-String aus einer Datei zu lesen, und verwendet die ObjectMapper-Klasse, um den JSON-String in ein Person-Objekt zu entmarshalieren. Durch Aufrufen der Methode „mapper.readValue(jsonString, Person.class)“ können wir den JSON-String in ein Person-Objekt konvertieren.

Zusammenfassend haben wir etwas über die Verwendung der neuen Records-Klasse in Java 13 gelernt und anhand von Beispielcode gezeigt, wie man die Records-Klasse zum Marshallen und Unmarshalieren von Datenobjekten verwendet. Die Records-Klasse bietet uns eine übersichtliche Möglichkeit, unveränderliche Datenobjekte zu deklarieren und zu verwenden, wodurch der Code lesbarer und zuverlässiger wird. Wenn Sie Java 13 oder höher verwenden, probieren Sie die Records-Klasse aus und wenden Sie sie auf Ihr Projekt an.

Das obige ist der detaillierte Inhalt vonGruppieren und entmarshalieren Sie Datenobjekte mithilfe der neuen Records-Klasse in Java 13. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage