← Назад к вопросам

Какие знаешь 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?

  1. Иммутабельность — String, Integer и другие wrapper классы не должны меняться
  2. Безопасность — защита от переопределения критичных методов
  3. Оптимизация — компилятор может оптимизировать вызовы final методов
  4. Дизайн — указание на то, что класс не предназначен для наследования

Пример использования 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 {} // Ошибка компиляции!
    }
}
Какие знаешь final классы которые идут с JDK? | PrepBro