← Назад к вопросам
Какие знаешь final классы которые идут с JDK?
2.3 Middle🔥 141 комментариев
#Базы данных и SQL
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Final классы из JDK
Final класс — это класс, который не может быть расширен (отнаследован). В JDK существует множество final классов, которые разработчики Java должны знать. Эти классы создаются final в основном для безопасности, иммутабельности и оптимизации производительности.
Основные final классы из java.lang
Строковые классы:
- String — неизменяемая строка, самый часто используемый final класс
- StringBuilder — изменяемая строка
- StringBuffer — потокобезопасная изменяемая строка
Числовые классы (Wrapper классы):
- Integer — обёртка для примитивного типа int
- Long — обёртка для примитивного типа long
- Double — обёртка для примитивного типа double
- Float — обёртка для примитивного типа float
- Boolean — обёртка для примитивного типа boolean
- Byte — обёртка для примитивного типа byte
- Character — обёртка для примитивного типа char
- Short — обёртка для примитивного типа short
Другие важные классы:
- Object — базовый класс для всех объектов в Java
- Class — представление класса в runtime
- System — системные утилиты
- Runtime — доступ к runtime окружению
- ProcessBuilder — запуск процессов
Final классы из java.util
import java.util.*;
// Неизменяемые коллекции
public class FinalCollections {
public static void main(String[] args) {
// Collections.unmodifiableList возвращает финальный класс
List<String> list = Collections.unmodifiableList(
Arrays.asList("a", "b", "c")
);
// Collections.singletonList
List<String> single = Collections.singletonList("one");
// Collections.emptyList
List<String> empty = Collections.emptyList();
}
}
Final классы из java.io и java.nio
- File — работа с файловой системой
- FileInputStream — чтение из файла
- FileOutputStream — запись в файл
- BufferedReader — буферизированное чтение
- BufferedWriter — буферизированная запись
- PrintStream — печать (например, System.out)
- PrintWriter — печать в writer
Final классы из java.net
- URL — представление URL
- URI — представление URI
- Socket — TCP сокет
- ServerSocket — серверный сокет
- DatagramSocket — UDP сокет
- InetAddress — IP адрес
- URLEncoder — кодирование URL
- URLDecoder — декодирование URL
Final классы из java.time (Java 8+)
import java.time.*;
public class FinalTimeClasses {
public static void main(String[] args) {
// Все эти классы final и immutable
LocalDate date = LocalDate.now();
LocalTime time = LocalTime.now();
LocalDateTime dateTime = LocalDateTime.now();
Instant instant = Instant.now();
ZonedDateTime zonedDateTime = ZonedDateTime.now();
Duration duration = Duration.ofHours(1);
Period period = Period.ofDays(7);
}
}
Final классы из java.math
- BigInteger — целые числа произвольной точности
- BigDecimal — десятичные числа произвольной точности
import java.math.BigInteger;
import java.math.BigDecimal;
public class FinalMathClasses {
public static void main(String[] args) {
BigInteger big = new BigInteger("123456789012345678901234567890");
BigDecimal decimal = new BigDecimal("3.14159265358979323846");
}
}
Другие заметные final классы
- java.util.UUID — генерация уникальных идентификаторов
- java.util.regex.Pattern — скомпилированный регулярное выражение
- java.net.URLEncoder — кодирование строк для URL
- java.security.MessageDigest — хеширование
Почему классы делают final?
- Иммутабельность — String, Integer и другие wrapper классы не должны меняться
- Безопасность — защита от переопределения критичных методов
- Оптимизация — компилятор может оптимизировать вызовы final методов
- Дизайн — указание на то, что класс не предназначен для наследования
Пример использования final класса
public class FinalClassExample {
public static void main(String[] args) {
// String является final
String name = "John";
// Нельзя создать подкласс String
// class MyString extends String {} // Ошибка компиляции!
// Integer является final
Integer number = 42;
// Нельзя создать подкласс Integer
// class MyInteger extends Integer {} // Ошибка компиляции!
}
}