/
Walentin-Yatsenqo
/
demonstration-interface-java-lang-hallo-world
Обзор
Документация
Войти
/
Walentin-Yatsenqo
/
demonstration-interface-java-lang-hallo-world
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Main.java
142 строки
7 KB
Walentin-Yatsenqo
create Main.java
22 авг 2024, 07:55
22 авг 2024, 07:55
12e2f2f
Код
Авторство
О чём код?
import java.util.Scanner; public class Main { public static void main(String[] args) { // Создание потока для вывода сообщения Thread helloThread = new Thread(new Runnable() { // Реализация интерфейса Runnable для создания потока @Override public void run() { System.out.println("Hallo Word!"); // Сообщение, выводимое в потоке } }); // Запуск потока helloThread.start(); // Создание сканера для ввода с клавиатуры Scanner scanner = new Scanner(System.in); // Реализация интерфейса Closeable для управления ресурсами // Меню для пользователя while (true) { System.out.println("Выберите действие:"); System.out.println("1. Показать сообщение"); System.out.println("2. Выйти"); int choice = scanner.nextInt(); // Чтение выбора пользователя switch (choice) { case 1: // Показать сообщение в отдельном потоке new Thread(new Runnable() { // Реализация интерфейса Runnable для создания нового потока @Override public void run() { System.out.println("Hallo Word!"); // Сообщение, выводимое в новом потоке } }).start(); break; case 2: System.out.println("Выход из программы."); scanner.close(); // Закрытие сканера (реализация интерфейса Closeable) return; // Завершение программы default: System.out.println("Неверный выбор, попробуйте снова."); } } } // Реализация интерфейса Comparable для сравнения объектов static class MyComparable implements Comparable<MyComparable> { private int value; public MyComparable(int value) { this.value = value; // Инициализация значения для сравнения } @Override public int compareTo(MyComparable o) { return Integer.compare(this.value, o.value); // Сравнение значений } } // Реализация интерфейса Cloneable для создания копии объекта static class MyCloneable implements Cloneable { private String name; public MyCloneable(String name) { this.name = name; // Инициализация имени } @Override protected Object clone() throws CloneNotSupportedException { return super.clone(); // Создание копии объекта } } // Реализация интерфейса AutoCloseable для автоматического закрытия ресурса static class MyAutoCloseable implements AutoCloseable { @Override public void close() throws Exception { // Метод закрытия ресурса System.out.println("Ресурс закрыт."); // Сообщение при закрытии } } // Реализация интерфейса Runnable (второй раз для демонстрации) static class AnotherRunnable implements Runnable { @Override public void run() { System.out.println("Еще одно сообщение из другого потока!"); // Сообщение из другого потока } } // Реализация интерфейса Iterable для итерации по коллекции static class MyIterable implements Iterable<String> { private String[] items = {"Первый", "Второй", "Третий"}; // Элементы для итерации @Override public java.util.Iterator<String> iterator() { return new java.util.Iterator<String>() { private int index = 0; // Индекс текущего элемента @Override public boolean hasNext() { return index < items.length; // Проверка наличия следующего элемента } @Override public String next() { return items[index++]; // Возврат текущего элемента и переход к следующему } }; } } // Реализация интерфейса Serializable для сериализации объекта static class MySerializable implements java.io.Serializable { private static final long serialVersionUID = 1L; // Уникальный идентификатор версии private String data; public MySerializable(String data) { this.data = data; // Инициализация данных } } // Реализация интерфейса Thread.UncaughtExceptionHandler для обработки необработанных исключений в потоках static class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { System.out.println("Необработанное исключение в потоке " + t.getName() + ": " + e.getMessage()); // Сообщение об ошибке } } } /* Объяснение интерфейсов: Runnable: Позволяет создавать потоки, реализуя метод run(), который содержит код, выполняемый в новом потоке. Comparable: Позволяет сравнивать объекты, реализуя метод compareTo(), что позволяет сортировать объекты. Cloneable: Позволяет создавать копии объектов с помощью метода clone(). AutoCloseable: Позволяет автоматически закрывать ресурсы, реализуя метод close(), что удобно при использовании с конструкцией try-with-resources. Iterable: Позволяет объектам быть итерируемыми, реализуя метод iterator(), который возвращает итератор для обхода элементов. Serializable: Позволяет сериализовать объекты, что позволяет сохранять их состояние на диск или передавать по сети. Thread.UncaughtExceptionHandler: Позволяет обрабатывать необработанные исключения, возникающие в потоках, что помогает в отладке и управлении ошибками. */ */