Maison > Java > javaDidacticiel > le corps du texte

Marshall et désassembler les objets de données à l'aide de la nouvelle classe Records dans Java 13

WBOY
Libérer: 2023-07-31 23:33:28
original
743 Les gens l'ont consulté

Utilisez la nouvelle classe Records dans Java 13 pour marshaler et démarshaler des objets de données

À mesure que Java continue d'évoluer, chaque nouvelle version introduit de nouvelles fonctionnalités et améliorations. Dans Java 13, une nouvelle classe Records a été introduite, qui nous offre un moyen concis de déclarer et d'utiliser des objets de données immuables. Dans cet article, nous présenterons l'utilisation de la classe Records et démontrerons, à l'aide d'un exemple de code, comment utiliser la classe Records pour marshaler et démarshaler des objets de données.

Tout d'abord, comprenons le concept de classe Records. La classe Records est un nouveau type qui est à la fois une classe et une interface et est utilisée pour déclarer des objets de données immuables. La classe Records fournit des implémentations par défaut, notamment des méthodes telles que equals(), hashCode() et toString(). De plus, la classe Records crée automatiquement un constructeur pour initialiser les enregistrements. Contrairement aux classes ordinaires, la classe Records ne peut pas être étendue et n'est pas autorisée à définir ses propres champs et méthodes.

Donnons un exemple simple pour illustrer l'utilisation de la classe Records. Supposons que nous ayons un objet Person contenant le nom et l’âge.

public record Person(String name, int age) {}
Copier après la connexion

Le code ci-dessus définit une classe Person, qui est déclarée à l'aide de la classe Records. La classe Personne comporte deux champs : nom et âge. Nous pouvons maintenant créer un objet Person et accéder à ses champs.

Person person = new Person("Alice", 30);
System.out.println(person.name()); // 输出:Alice
System.out.println(person.age()); // 输出:30
Copier après la connexion

Comme indiqué ci-dessus, nous pouvons obtenir la valeur du champ de l'objet Person via les méthodes d'accès (name() et age()). De plus, la classe Records fournit également une méthode toString() par défaut afin que nous puissions imprimer directement l'objet Person.

Ensuite, regardons un exemple plus complexe. Supposons que nous ayons un objet Student qui étend l’objet Person et ajoute le champ school.

public record Student(String name, int age, String school) implements Person {}
Copier après la connexion

Le code ci-dessus définit une classe Student, qui hérite de la classe Person, et ajoute un champ scolaire. En même temps, nous utilisons le mot-clé Implements pour spécifier que la classe Student est la classe d'implémentation de l'interface Person. Les objets déclarés à l'aide de la classe Records peuvent subir un héritage de classe et une implémentation d'interface tout comme les objets ordinaires.

Voyons maintenant comment rassembler et désorganiser des objets de données à l'aide de la classe Records. Supposons que nous souhaitions convertir l'objet Person en chaîne JSON et l'enregistrer dans un fichier.

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并保存到文件中");
    }
}
Copier après la connexion

Le code ci-dessus utilise la classe ObjectMapper de la bibliothèque Jackson pour rassembler les objets Person dans une chaîne JSON et l'enregistrer dans un fichier. En appelant la méthode mapper.writeValueAsString(person), nous pouvons convertir l'objet Person en une chaîne JSON. Nous utilisons ensuite la classe FileWriter pour écrire la chaîne JSON dans le fichier.

Le processus de dégroupement est à l’opposé du regroupement. Supposons que nous lisions une chaîne JSON à partir d’un fichier et que nous la désorganisions dans un objet Person.

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);
    }
}
Copier après la connexion

Le code ci-dessus utilise la classe Files pour lire une chaîne JSON à partir d'un fichier et utilise la classe ObjectMapper pour désorganiser la chaîne JSON dans un objet Person. En appelant la méthode mapper.readValue(jsonString, Person.class), nous pouvons convertir la chaîne JSON en un objet Person.

En résumé, nous avons découvert l'utilisation de la nouvelle classe Records dans Java 13 et démontré, à l'aide d'un exemple de code, comment utiliser la classe Records pour rassembler et désorganiser des objets de données. La classe Records nous fournit un moyen concis de déclarer et d'utiliser des objets de données immuables, rendant le code plus lisible et fiable. Si vous utilisez Java 13 ou une version ultérieure, essayez la classe Records et appliquez-la à votre projet.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal