До 30 ноября

Скидки до 81 000 руб и вторая профессия в подарок!

каковы основы сериализации в java включая интерфейс serializable и ключевое слово transient

Аватар пользователя Maksim Litvinov
Maksim Litvinov
11 ноября 2024

Сериализация — это процесс преобразования объекта в последовательность байтов, чтобы его можно было сохранить в файле или передать по сети. При этом объект может быть восстановлен (десериализован) в его первоначальное состояние

Чтобы объект мог быть сериализован, его класс должен реализовывать интерфейс Serializable. Этот интерфейс не содержит методов. Он служит только для обозначения того, что объект может быть сериализован

import java.io.Serializable;

public class Person implements Serializable {
  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  // Геттеры и сеттеры
}

Если нужно исключить определенные поля из процесса сериализации, вы можете объявить их с помощью ключевого слова transient. Это означает, что при сериализации объекта значение данного поля не будет сохранено.

public class Person implements Serializable {
    private String name;
    private int age;
    transient private String password; // Это поле не будет сериализовано

    public Person(String name, int age, String password) {
        this.name = name;
        this.age = age;
        this.password = password;
    }

    // Геттеры и сеттеры
}

Для примера сериализуем и десериализуем объект класса Person:

import java.io.*;

public class SerializationExample {
    public static void main(String[] args) {
        Person person = new Person("Alice", 30, "secretPassword");

        // Сериализация
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
            oos.writeObject(person);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // Десериализация
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("person.ser"))) {
            Person deserializedPerson = (Person) ois.readObject();
            System.out.println("Name: " + deserializedPerson.getName());
            System.out.println("Age: " + deserializedPerson.getAge());
            System.out.println("Password: " + deserializedPerson.getPassword()); // Это будет null
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}
0 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Программирование

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

Тест-драйв

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.