Spec-Zone.ru › Java Language Specification 24

Спецификация языка Java®

Java SE 24 Edition

Джеймс Гослинг

Билл Джой

Гай Стил

Гилад Браха

Алекс Бакли

Даниэл Смит

Гавин Бирман

07.02.2025

Правовая информация

Содержание

1. Введение
1.1. Организация спецификации
1.2. Примерные программы
1.3. Нотация
1.4. Связь с предопределёнными классами и интерфейсами
1.5. Предварительные возможности
1.6. Обратная связь
1.7. Ссылки
2. Грамматики
2.1. Свободно конструируемые грамматики
2.2. Лексическая грамматика
2.3. Синтаксическая грамматика
2.4. Нотация грамматики
3. Лексическая структура
3.1. Unicode
3.2. Лексические преобразования
3.3. Экранирование Unicode
3.4. Разделители строк
3.5. Элементы ввода и токены
3.6. Пробелы
3.7. Комментарии
3.8. Идентификаторы
3.9. Ключевые слова
3.10. Литералы
3.10.1. Целочисленные литералы
3.10.2. Литералы с плавающей точкой
3.10.3. Булевы литералы
3.10.4. Символьные литералы
3.10.5. Строковые литералы
3.10.6. Текстовые блоки
3.10.7. Последовательности экранирования
3.10.8. Литерал null
3.11. Разделители
3.12. Операторы
4. Типы, значения и переменные
4.1. Виды типов и значений
4.2. Примитивные типы и значения
4.2.1. Целочисленные типы и значения
4.2.2. Целочисленные операции
4.2.3. Типы и значения с плавающей точкой
4.2.4. Операции с плавающей точкой
4.2.5. Тип boolean и булевы значения
4.3. Ссылочные типы и значения
4.3.1. Объекты
4.3.2. Класс Object
4.3.3. Класс String
4.3.4. Когда ссылочные типы совпадают
4.4. Переменные типов
4.5. Параметризованные типы
4.5.1. Аргументы типов параметризованных типов
4.5.2. Члены и конструкторы параметризованных типов
4.6. Стирание типов
4.7. Реализуемые типы
4.8. Необработанные типы
4.9. Пересекающиеся типы
4.10. Подтипирование
4.10.1. Подтипирование между примитивными типами
4.10.2. Подтипирование между типами классов и интерфейсов
4.10.3. Подтипирование между массивами типов
4.10.4. Наименьшее общее надмножество
4.10.5. Проекции типов
4.11. Где используются типы
4.12. Переменные
4.12.1. Переменные примитивного типа
4.12.2. Переменные ссылочного типа
4.12.3. Виды переменных
4.12.4. final Переменные
4.12.5. Начальные значения переменных
4.12.6. Типы, классы и интерфейсы
5. Преобразования и контексты
5.1. Виды преобразования
5.1.1. Идентичное преобразование
5.1.2. Расширяющее преобразование примитивных типов
5.1.3. Сужающее преобразование примитивных типов
5.1.4. Расширяющее и сужающее преобразование примитивных типов
5.1.5. Расширяющее преобразование ссылочных типов
5.1.6. Сужающее преобразование ссылочных типов
5.1.6.1. Разрешённое сужающее преобразование ссылочных типов
5.1.6.2. Проверяемое и непроверяемое сужающее преобразование ссылочных типов
5.1.6.3. Сужающее преобразование ссылочных типов во время выполнения
5.1.7. Преобразование в коробку
5.1.8. Преобразование из коробки
5.1.9. Непроверяемое преобразование
5.1.10. Преобразование захвата
5.1.11. Преобразование строки
5.1.12. Запрещённые преобразования
5.2. Контексты присваивания
5.3. Контексты вызова
5.4. Контексты строк
5.5. Контексты приведения типов
5.6. Численные контексты
5.7. Контексты проверки
6. Имена
END_OF_DOCUMENT_MARKER
6.1. Объявления
6.2. Имена и идентификаторы
6.3. Область видимости объявления
6.3.1. Область видимости переменных шаблонов в выражениях
6.3.1.1. Оператор логического И &&
6.3.1.2. Оператор логического ИЛИ ||
6.3.1.3. Оператор логического НЕ !
6.3.1.4. Условный оператор ? :
6.3.1.5. Оператор сопоставления шаблонов instanceof
6.3.1.6. switch Выражения
6.3.1.7. Выражения в скобках
6.3.2. Область видимости переменных шаблонов в операторах
6.3.2.1. Блоки
6.3.2.2. if Операторы
6.3.2.3. while Операторы
6.3.2.4. do Операторы
6.3.2.5. for Операторы
6.3.2.6. switch Операторы
6.3.2.7. Операторы с метками
6.3.3. Область видимости переменных шаблонов в case метках
6.4. Затенение и скрытие
6.4.1. Затенение
6.4.2. Скрытие
6.5. Определение значения имени
6.5.1. Синтаксическая классификация имени в зависимости от контекста
6.5.2. Переклассификация контекстуально неоднозначных имён
6.5.3. Значение имён модулей и пакетов
6.5.3.1. Простые имена пакетов
6.5.3.2. Квалифицированные имена пакетов
6.5.4. Значение имен_пакета_или_типа
6.5.4.1. Простые имена_пакета_или_типа
6.5.4.2. Квалифицированные имена_пакета_или_типа
6.5.5. Значение имён типов
6.5.5.1. Простые имена типов
6.5.5.2. Квалифицированные имена типов
6.5.6. Значение имён выражений
6.5.6.1. Простые имена выражений
6.5.6.2. Квалифицированные имена выражений
6.5.7. Значение имён методов
6.5.7.1. Простые имена методов
6.6. Управление доступом
6.6.1. Определение доступности
6.6.2. Подробности по protected доступу
6.6.2.1. Доступ к protected члену
6.6.2.2. Доступ к protected конструктору
6.7. Полные имена и канонические имена
7. Пакеты и модули
7.1. Члены пакета
7.2. Поддержка хоста для модулей и пакетов
7.3. Единицы компиляции
7.4. Объявления пакетов
7.4.1. Имянованные пакеты
7.4.2. Без имени пакеты
7.4.3. Наблюдаемость и видимость пакета
7.5. Объявления импорта
7.5.1. Объявления импорта отдельного типа
7.5.2. Объявления импорта всех типов
7.5.3. Объявления статического импорта отдельного элемента
7.5.4. Объявления статического импорта всех элементов
7.6. Объявления верхнего уровня класса и интерфейса
7.7. Объявления модулей
7.7.1. Зависимости
7.7.2. Экспортируемые и открытые пакеты
7.7.3. Потребление сервисов
7.7.4. Предоставление сервисов
7.7.5. Модули без имени
7.7.6. Наблюдаемость модуля
8. Классы
8.1. Объявления классов
8.1.1. Модификаторы классов
8.1.1.1. abstract Классы
8.1.1.2. sealed, non-sealed и final классы
8.1.1.3. strictfp классы
8.1.1.4. static классы
8.1.2. Обобщённые классы и параметры типа
8.1.3. Вложенные классы и окружающие экземпляры
8.1.4. Суперклассы и подклассы
8.1.5. Суперинтерфейсы
8.1.6. Разрешённые непосредственные подклассы
8.1.7. Тело класса и объявления членов
8.2. Члены класса
8.3. Объявления полей
8.3.1. Модификаторы полей
8.3.1.1. static Поля
8.3.1.2. final Поля
8.3.1.3. transient Поля
8.3.1.4. volatile Поля
8.3.2. Инициализация полей
8.3.3. Ограничения на ссылки на поля в инициализаторах
8.4. Объявления методов
8.4.1. Формальные параметры
8.4.2. Подпись метода
8.4.3. Модификаторы методов
8.4.3.1. abstract Методы
8.4.3.2. static Методы
8.4.3.3. final Методы
8.4.3.4. native Методы
8.4.3.5. strictfp Методы
8.4.3.6. synchronized Методы
8.4.4. Обобщённые методы
8.4.5. Результат метода
8.4.6. Исключение метода
8.4.7. Тело метода
8.4.8. Наследование, переопределение и скрытие
8.4.8.1. Переопределение (методами экземпляров)
8.4.8.2. Скрытие (методами класса)
8.4.8.3. Требования при переопределении и скрытии
8.4.8.4. Наследование методов с подписью, эквивалентной переопределению
8.4.9. Перегрузка
8.5. Объявления классов и интерфейсов членов
8.6. Инициализаторы экземпляров
8.7. Статические инициализаторы
8.8. Объявления конструкторов
8.8.1. Формальные параметры
8.8.2. Подпись конструктора
8.8.3. Модификаторы конструкторов
8.8.4. Обобщённые конструкторы
8.8.5. Исключение конструктора
8.8.6. Тип конструктора
8.8.7. Тело конструктора
8.8.7.1. Явные вызовы конструкторов
8.8.8. Перегрузка конструкторов
8.8.9. Конструктор по умолчанию
8.8.10. Предотвращение создания экземпляра класса
8.9. Классы перечислений
8.9.1. Константы перечисления
8.9.2. Объявления тела перечисления
8.9.3. Члены перечисления
8.10. Классы записей
8.10.1. Компоненты записи
8.10.2. Объявления тела записи
8.10.3. Члены записи
8.10.4. Объявления конструкторов записи
8.10.4.1. Обычные канонические конструкторы
8.10.4.2. Компактные канонические конструкторы
9. Интерфейсы
END_OF_DOCUMENT_MARKER
9.1. Объявления интерфейсов
9.1.1. Модификаторы интерфейсов
9.1.1.1. abstract Интерфейсы
9.1.1.2. strictfp Интерфейсы
9.1.1.3. static Интерфейсы
9.1.1.4. sealed и non-sealed интерфейсы
9.1.2. Обобщенные интерфейсы и параметры типов
9.1.3. Супер- и под-интерфейсы
9.1.4. Разрешенные прямые подклассы и под-интерфейсы
9.1.5. Тело интерфейса и объявления членов
9.2. Члены интерфейса
9.3. Объявления полей (констант)
9.3.1. Инициализация полей в интерфейсах
9.4. Объявления методов
9.4.1. Наследование и переопределение
9.4.1.1. Переопределение (методами экземпляров)
9.4.1.2. Требования при переопределении
9.4.1.3. Наследование методов с эквивалентными по значению сигнатурами
9.4.2. Перегрузка
9.4.3. Тело метода интерфейса
9.5. Объявления вложенных классов и интерфейсов
9.6. Аннотированные интерфейсы
9.6.1. Элементы аннотированного интерфейса
9.6.2. Значения по умолчанию для элементов аннотированных интерфейсов
9.6.3. Повторяющиеся аннотированные интерфейсы
9.6.4. Предопределённые аннотированные интерфейсы
9.6.4.1. @Target
9.6.4.2. @Retention
9.6.4.3. @Inherited
9.6.4.4. @Override
9.6.4.5. @SuppressWarnings
9.6.4.6. @Deprecated
9.6.4.7. @SafeVarargs
9.6.4.8. @Repeatable
9.6.4.9. @FunctionalInterface
9.7. Аннотации
9.7.1. Нормальные аннотации
9.7.2. Аннотации-метки
9.7.3. Аннотации с единственным элементом
9.7.4. Где могут располагаться аннотации
9.7.5. Несколько аннотаций одного интерфейса
9.8. Функциональные интерфейсы
9.9. Типы функций
10. Массивы
10.1. Типы массивов
10.2. Переменные массивов
10.3. Создание массивов
10.4. Доступ к элементам массива
10.5. Исключение Array Store
10.6. Инициализаторы массивов
10.7. Члены массива
10.8. Class Объекты для массивов
10.9. Массив символов не является String
11. Исключения
11.1. Виды и причины исключений
11.1.1. Виды исключений
11.1.2. Причины исключений
11.1.3. Асинхронные исключения
11.2. Проверка исключений во время компиляции
11.2.1. Анализ исключений выражений
11.2.2. Анализ исключений операторов
11.2.3. Проверка исключений
11.3. Обработка исключения во время выполнения
12. Выполнение
12.1. Запуск виртуальной машины Java
12.1.1. Загрузка класса Test
12.1.2. Связывание Test: верификация, подготовка, (необязательное) разрешение
12.1.3. Инициализация: выполнение инициализаторов
12.1.4. Вызов Test.main
12.2. Загрузка классов и интерфейсов
12.2.1. Процесс загрузки
12.2.2. Согласованность загрузчика классов
12.3. Связывание классов и интерфейсов
12.3.1. Верификация двоичного представления
12.3.2. Подготовка класса или интерфейса
12.3.3. Разрешение символических ссылок
12.4. Инициализация классов и интерфейсов
12.4.1. Время инициализации
12.4.2. Детальный порядок инициализации
12.5. Создание новых экземпляров классов
12.6. Заключительная обработка экземпляров классов
12.6.1. Реализация заключительной обработки
12.6.2. Взаимодействие с моделью памяти
12.7. Выгрузка классов и интерфейсов
12.8. Выход из программы
13. Бинарная совместимость
13.1. Формат двоичного файла
13.2. Что такое и что не является бинарной совместимостью
13.3. Эволюция пакетов и модулей
13.4. Эволюция классов
13.4.1. abstract Классы
13.4.2. sealed, non-sealed и final классы
13.4.2.1. sealed классы
13.4.2.2. non-sealed классы
13.4.2.3. final классы
13.4.3. public классы
13.4.4. Суперклассы и суперинтерфейсы
13.4.5. Параметры типа класса
13.4.6. Тело класса и объявления членов
13.4.7. Доступ к членам и конструкторам
13.4.8. Объявления полей
13.4.9. final поля и static константы
13.4.10. static поля
13.4.11. transient поля
13.4.12. Объявления методов и конструкторов
13.4.13. Параметры типа метода и конструктора
13.4.14. Формальные параметры метода и конструктора
13.4.15. Тип возвращаемого значения метода
13.4.16. abstract методы
13.4.17. final методы
13.4.18. native методы
13.4.19. static методы
13.4.20. synchronized методы
13.4.21. Исключение методов и конструкторов
13.4.22. Тело метода и конструктора
13.4.23. Перегрузка метода и конструктора
13.4.24. Переопределение метода
13.4.25. Статические инициализаторы
13.4.26. Эволюция перечислений
13.4.27. Эволюция record-классов
13.5. Эволюция интерфейсов
13.5.1. public интерфейсы
13.5.2. sealed и non-sealed интерфейсы
13.5.3. Суперинтерфейсы
13.5.4. Члены интерфейса
13.5.5. Параметры типа интерфейса
13.5.6. Объявления полей
13.5.7. Объявления методов интерфейса
13.5.8. Аннотационные интерфейсы
14. Блоки, операторы и шаблоны
14.1. Нормальное и прерывистое завершение операторов
14.2. Блоки
14.3. Объявления локального класса и интерфейса
14.4. Объявления локальных переменных
14.4.1. Локальные объявления переменных и типы
14.4.2. Операторы объявления локальных переменных
14.5. Операторы
14.6. Пустой оператор
14.7. Операторы с метками
14.8. Операторы выражений
14.9. Оператор if
14.9.1. Оператор if-then
14.9.2. Оператор if-then-else
14.10. Оператор assert
14.11. Оператор switch
14.11.1. Блоки switch
14.11.1.1. Полные блоки switch
14.11.1.2. Определение, какой метке switch соответствует запуск в ходе исполнения
14.11.2. Блок switch оператора switch
14.11.3. Исполнение оператора switch
14.12. Оператор while
14.12.1. Прерывистое завершение оператора while
14.13. Оператор do
14.13.1. Прерывистое завершение оператора do
14.14. Оператор for
14.14.1. Базовый оператор for
14.14.1.1. Инициализация оператора for
14.14.1.2. Итерация оператора for
14.14.1.3. Прерывистое завершение оператора for
14.14.2. Расширенный оператор for
14.15. Оператор break
14.16. Оператор continue
14.17. Оператор return
14.18. Оператор throw
14.19. Оператор synchronized
14.20. Оператор try
14.20.1. Выполнение оператора try-catch
14.20.2. Выполнение операторов try-finally и try-catch-finally
14.20.3. try-с-ресурсами
14.20.3.1. Базовый оператор try-с-ресурсами
14.20.3.2. Расширенный оператор try-с-ресурсами
14.21. Оператор yield
14.22. Недостижимые операторы
14.30. Шаблоны
14.30.1. Виды шаблонов
14.30.2. Сопоставление с шаблоном
14.30.3. Свойства шаблонов
15. Выражения
15.1. Оценка, обозначение и результат
15.2. Формы выражений
15.3. Тип выражения
15.4. Выражения с плавающей точкой
15.5. Выражения и проверки во время выполнения
15.6. Нормальное и прерывистое завершение оценки
15.7. Порядок оценки
15.7.1. Сначала оценивается левое операнд
15.7.2. Операнды оцениваются перед операцией
15.7.3. Оценка учитывает скобки и приоритет
15.7.4. Списки аргументов оцениваются слева направо
15.7.5. Порядок оценки для других выражений
15.8. Первичные выражения
15.8.1. Лексические литералы
15.8.2. Литералы классов
15.8.3. this
15.8.4. Квалифицированные this
15.8.5. Выражения в скобках
15.9. Выражения создания экземпляров класса
15.9.1. Определение класса, подлежащего инициализации
15.9.2. Определение окружающих экземпляров
15.9.3. Выбор конструктора и его аргументов
15.9.4. Вычисление выражений создания экземпляров класса во время выполнения
15.9.5. Объявления анонимных классов
15.9.5.1. Анонимные конструкторы
15.10. Выражения создания и доступа к массивам
15.10.1. Выражения создания массивов
15.10.2. Вычисление выражений создания массивов во время выполнения
15.10.3. Выражения доступа к элементам массива
15.10.4. Вычисление выражений доступа к элементам массива во время выполнения
15.11. Выражения доступа к полям
15.11.1. Доступ к полям с использованием первичного элемента
15.11.2. Доступ к членам суперкласса с использованием super
15.12. Выражения вызова методов
15.12.1. Этап компиляции 1: определение типа для поиска
15.12.2. Этап компиляции 2: определение сигнатуры метода
15.12.2.1. Определение потенциально применимых методов
15.12.2.2. Фаза 1: Определение методов с совпадающей арностью, применимых по строгому вызову
15.12.2.3. Фаза 2: Определение методов с совпадающей арностью, применимых по свободному вызову
15.12.2.4. Фаза 3: Определение методов, применимых по вызову с переменной арностью
15.12.2.5. Выбор наиболее специфичного метода
15.12.2.6. Тип вызываемого метода
15.12.3. Этап компиляции 3: Подходящий ли выбранный метод?
15.12.4. Оценка вызова метода во время выполнения
15.12.4.1. Вычисление целевой ссылки (при необходимости)
15.12.4.2. Оценка аргументов
15.12.4.3. Проверка доступности типа и метода
15.12.4.4. Поиск вызываемого метода
15.12.4.5. Создание фрейма, синхронизация, передача управления
15.13. Выражения ссылок на методы
15.13.1. Объявление ссылки на метод на этапе компиляции
15.13.2. Тип ссылки на метод
15.13.3. Оценка ссылок на методы во время выполнения
15.14. Постфиксные выражения
15.14.1. Имена выражений
15.14.2. Постфиксный оператор инкремента ++
15.14.3. Постфиксный оператор декремента --
15.15. Унарные операторы
15.15.1. Префиксный оператор инкремента ++
15.15.2. Префиксный оператор декремента --
15.15.3. Унарный плюс-оператор +
15.15.4. Унарный минус-оператор -
15.15.5. Битовый дополняющий оператор ~
15.15.6. Логический дополняющий оператор !
15.16. Выражения приведения типов
15.17. Множительные операторы
15.17.1. Оператор умножения *
15.17.2. Оператор деления /
15.17.3. Оператор остатка %
15.18. Сложение операторов
15.18.1. Оператор конкатенации строк +
15.18.2. Операторы сложения (+ и -) для числовых типов
15.19. Операторы сдвига
15.20. Операторы сравнения
15.20.1. Числовые операторы сравнения <, <=, > и >=
15.20.2. Оператор instanceof
15.21. Операторы равенства
15.21.1. Числовые операторы равенства == и !=
15.21.2. Логические операторы равенства == и !=
15.21.3. Операторы равенства ссылок == и !=
15.22. Битовые и логические операторы
15.22.1. Битовые операторы для целых чисел &, ^ и |
15.22.2. Логические операторы для булевых значений &, ^ и |
15.23. Оператор условного И &&
15.24. Оператор условного ИЛИ ||
15.25. Оператор условного выражения ? :
15.25.1. Булевые условные выражения
15.25.2. Числовые условные выражения
15.25.3. Ссылочные условные выражения
15.26. Операторы присваивания
15.26.1. Оператор простого присваивания =
15.26.2. Операторы сложного присваивания
15.27. Лямбда-выражения
15.27.1. Параметры лямбда-выражения
15.27.2. Тело лямбда-выражения
15.27.3. Тип лямбда-выражения
15.27.4. Вычисление лямбда-выражений во время выполнения
15.28. switch Выражения
15.28.1. Блок switch switch выражения
15.28.2. Вычисление switch выражений во время выполнения
15.29. Константы выражения
16. Определенное присвоение
16.1. Определенное присвоение и выражения
16.1.1. Булевы константы выражения
16.1.2. Оператор логического И &&
16.1.3. Оператор логического ИЛИ ||
16.1.4. Оператор логического НЕ !
16.1.5. Условный оператор ? :
16.1.6. switch выражения
16.1.7. Другие выражения типа boolean
16.1.8. Выражения присваивания
16.1.9. Операторы ++ и --
16.1.10. Другие выражения
16.2. Определенное присвоение и операторы
16.2.1. Пустые операторы
16.2.2. Блоки
16.2.3. Объявления локальных классов и интерфейсов
16.2.4. Операторы объявления локальных переменных
16.2.5. Операторы с метками
16.2.6. Операторы выражений
16.2.7. if операторы
16.2.8. assert операторы
16.2.9. switch операторы
16.2.10. while операторы
16.2.11. do операторы
16.2.12. for операторы
16.2.12.1. Инициализирующая часть оператора for
16.2.12.2. Часть инкрементации оператора for
16.2.13. break, yield, continue, return, и throw операторы
16.2.14. synchronized операторы
16.2.15. try операторы
16.3. Определенное присвоение и параметры
16.4. Определенное присвоение и инициализаторы массивов
16.5. Определенное присвоение и константы перечислений
16.6. Определенное присвоение и анонимные классы
16.7. Определенное присвоение и классы-члены и интерфейсы
16.8. Определенное присвоение и статические инициализаторы
16.9. Определенное присвоение, конструкторы и инициализаторы экземпляров
17. Потоки и блокировки
17.1. Синхронизация
17.2. Множества ожидания и уведомление
17.2.1. Ожидание
17.2.2. Уведомление
17.2.3. Прерывания
17.2.4. Взаимодействие ожидания, уведомления и прерывания
17.3. Sleep и Yield
17.4. Модель памяти
17.4.1. Общие переменные
17.4.2. Действия
17.4.3. Программы и порядок выполнения
17.4.4. Порядок синхронизации
17.4.5. Порядок happens-before
17.4.6. Выполнения
17.4.7. Правильно сформированные выполнения
17.4.8. Выполнения и требования к причинности
17.4.9. Наблюдаемое поведение и бесконечные выполнения
17.5. final Семантика полей
17.5.1. Семантика final полей
17.5.2. Чтение final полей во время построения
17.5.3. Последующая модификация final полей
17.5.4. Защищенные от записи поля
17.6. Разрыв слова
17.7. Неатомарное обращение с double и long
18. Вывод типов
18.1. Концепции и обозначения
18.1.1. Переменные вывода типа
18.1.2. Формулы ограничений
18.1.3. Границы
18.2. Сведение
18.2.1. Ограничения совместимости выражений
18.2.2. Ограничения совместимости типов
18.2.3. Ограничения подтипов
18.2.4. Ограничения равенства типов
18.2.5. Ограничения исключений checked
18.3. Включение
18.3.1. Дополнительные пары границ
18.3.2. Границы, включающие преобразование захвата
18.4. Разрешение
18.5. Использование вывода типов
18.5.1. Вывод применимости вызова
18.5.2. Вывод типа вызова
18.5.2.1. Совместимость вызова поли-метода
18.5.2.2. Дополнительные ограничения аргументов
18.5.3. Вывод параметризации функциональных интерфейсов
18.5.4. Вывод более специфичного метода
18.5.5. Вывод типа шаблона записи
19. Синтаксис
A. Ограниченное предоставление лицензии

Список примеров

3.10.5-1. Литералы строк
3.10.6-1. Текстовые блоки
3.10.6-2. Последовательности экранирования в текстовых блоках
3.10.6-3. Порядок преобразований содержимого текстового блока
3.10.6-4. Текстовые блоки оцениваются как String
4.2.2-1. Операции с целыми числами
4.2.4-1. Операции с числами с плавающей точкой
4.3.1-1. Создание объектов
4.3.1-2. Тождество примитивных и ссылочных типов
4.4-1. Члены переменной типа
4.5.1-1. Неограниченные подстановочные знаки
4.5.1-2. Ограниченные подстановочные знаки
4.8-1. Примитивные типы
4.8-2. Примитивные типы и наследование
4.11-1. Использование типа
4.12.3-1. Различные виды переменных
4.12.4-1. Постоянные переменные
4.12.5-1. Начальные значения переменных
4.12.6-1. Тип переменной и класс объекта
5.0-1. Преобразования во время компиляции и выполнения
5.0-2. Преобразования в различных контекстах
5.1.2-1. Расширяющее преобразование примитивных типов
5.1.3-1. Сужающее преобразование примитивных типов
5.1.3-2. Сужающие преобразования примитивных типов, которые приводят к потере информации
5.2-1. Присваивание для примитивных типов
5.2-2. Присваивание для ссылочных типов
5.2-3. Присваивание для массивов
5.5-1. Приведение типов для ссылочных типов
5.5-2. Приведение типов для массивов
5.5-3. Несовместимые типы во время выполнения
5.6-1. Унарное числовое продвижение
5.6-2. Бинарное числовое продвижение
6.1-1. Уникальные имена пакетов
6.1-2. Уникальные имена модулей
6.1-3. Описательные имена классов
6.1-4. Условные имена переменных типа
6.3-1. Область видимости объявлений классов
6.3-2. Область видимости объявлений локальных переменных
6.4-1. Попытка затенения локальной переменной
6.4.1-1. Затенение поля объявлением локальной переменной
6.4.1-2. Затенение типа объявлением другого типа
6.5.2-1. Переквалификация контекстуально неоднозначных имен
6.5.5.1-1. Ссылки на параметры типа
6.5.5.2-1. Квалифицированные имена типов
6.5.6.1-1. Простые имена выражений
6.5.6.1-2. Ссылки на переменные экземпляров
6.5.6.1-3. Ссылки на локальные переменные и формальные параметры
6.5.6.2-1. Квалифицированные имена выражений
6.5.6.2-2. Квалификация выражения именем типа
6.5.7.1-1. Простые имена методов
6.6-1. Управление доступом
6.6-2. Доступ к public полям, методам и конструкторам
6.6-3. Доступ к public и не-public классам
6.6-4. Доступ к полям, методам и конструкторам с доступом по пакету
6.6-5. Доступ к private полям, методам и конструкторам
6.6.2-1. Доступ к protected полям, методам и конструкторам
6.7-1. Полные имена
6.7-2. Полные имена против канонического имени
7.4.2-1. Пакет без имени
7.5.1-1. Импорт одного типа
7.5.1-2. Дублирование объявлений классов
7.5.1-3. Отсутствие импорта подпакета
7.5.1-4. Импорт имени типа, которое также является именем пакета
7.5.2-1. Импорт типа по умолчанию
7.6-1. Конфликтующие объявления классов и интерфейсов верхнего уровня
7.6-2. Область видимости классов и интерфейсов верхнего уровня
7.6-3. Полные имена
7.1.1-1. Разрешение requires transitive директив
8.1.1.1-1. Объявление абстрактного класса
8.1.1.1-2. Объявление абстрактного класса, запрещающего подклассы
8.1.2-1. Взаимно рекурсивные границы переменных типа
8.1.2-2. Вложенные обобщенные классы
8.1.3-1. Вложенные классы и статические члены
8.1.3-2. Вложенные объявления классов
8.1.4-1. Прямые суперклассы и подклассы
8.1.4-2. Суперклассы и подклассы
8.1.4-3. Класс зависит от самого себя
8.1.5-1. Незаконные суперинтерфейсы
8.1.5-2. Суперинтерфейсы
8.1.5-3. Незаконное множественное наследование интерфейса
8.1.5-4. Реализация методов суперинтерфейса
8.2-1. Использование членов класса
8.2-2. Наследование членов класса с доступом по пакету
8.2-3. Наследование public и protected членов класса
8.2-4. Наследование private членов класса
8.2-5. Доступ к членам недоступных классов
8.3-1. Поля, унаследованные несколько раз
8.3-2. Повторное наследование полей
8.3.1.1-1. static поля
8.3.1.1-2. Маскирование переменных класса
8.3.1.1-3. Маскирование переменных экземпляров
8.3.1.3-1. Сохранение transient полей
8.3.1.4-1. volatile поля
8.3.2-1. Инициализация полей
8.3.2-2. Вперед-ссылка на переменную класса
8.3.3-1. Ограничения на ссылки на поля
8.4.2-1. Эквивалентные сигнатуры переопределения
8.4.3.1-1. Абстрактное/Абстрактный метод переопределения
8.4.3.1-2. Абстрактное/Не-абстрактное переопределение
8.4.3.6-1. synchronized мониторы
8.4.3.6-2. synchronized методы
8.4.6-1. Переменные типа как типы исключений, которые могут быть брошены
8.4.8-1. Наследование
8.4.8.1-1. Переопределение
8.4.8.1-2. Переопределение
8.4.8.2-1. Вызов скрытых методов класса
8.4.8.3-1. Ковариативные типы возврата
8.4.8.3-2. Предупреждение о типе возврата, которое не соответствует типу
8.4.8.3-3. Некорректное переопределение из-за throws
8.4.8.3-4. Стирание влияет на переопределение
8.4.8.4-1. Наследование методов с эквивалентным переопределением
8.4.9-1. Перегрузка
8.4.9-2. Перегрузка, переопределение и скрытие
8.8-1. Объявления конструкторов
8.8.7-1. Тела конструкторов
8.8.7.1-1. Ограничения на явные выражения вызова конструктора
8.8.7.1-2. Вызов конструктора суперкласса с квалификатором
8.8.9-1. Конструкторы по умолчанию
8.8.9-2. Доступность конструкторов по отношению к классам
8.8.10-1. Запрещение создания экземпляров через доступность конструктора
8.9.2-1. Объявления тела перечисления
8.9.2-2. Ограничение на ссылку перечисления на себя
8.9.3-1. Итерирование по константам перечисления с помощью расширенного for цикла
8.9.3-2. Переключение на константы перечисления
8.9.3-3. Константы перечисления с телами классов
8.9.3-4. Несколько классов перечислений
9.3-1. Неоднозначные унаследованные поля
9.3-2. Поля, унаследованные несколько раз
9.3.1-1. Вперед-ссылка на поле
9.4.2-1. Перегрузка abstract объявления метода
9.6.1-1. Объявление интерфейса аннотации
9.6.1-2. Объявление интерфейса аннотации-метки
9.6.1-3. Объявления интерфейсов аннотаций с одним элементом
9.6.2-1. Объявление интерфейса аннотации с значениями по умолчанию
9.6.3-1. Неправильно сформированный содержащий интерфейс аннотации
9.6.3-2. Ограничение на то, где аннотации могут повторяться
9.6.3-3. Повторяемый содержащий интерфейс аннотации
9.7.1-1. Обычные аннотации
9.7.2-1. Аннотации-метки
9.7.3-1. Аннотации с одним элементом
9.8-1. Функциональные интерфейсы
9.8-2. Функциональные интерфейсы и стирание
9.8-3. Обобщенные функциональные интерфейсы
9.9-1. Типы функций
9.9-2. Обобщенные типы функций
10.2-1. Объявления переменных массивов
10.2-2. Переменные массивов и типы массивов
10.4-1. Обращение к элементам массива
10.5-1. ArrayStoreException
10.6-1. Инициализаторы массивов
10.7-1. Массивы могут быть клонированы
10.7-2. Общие подмассивы после клонирования
10.8-1. Class Объект массива
10.8-2. Массивы Class объектов разделяются
11.2.3-1. Обработка проверочных исключений
11.3-1. Генерация и обработка исключений
12.4.1-1. Суперклассы инициализируются до подклассов
12.4.1-2. Инициализируется только класс, объявляющий поле static
12.4.1-3. Инициализация интерфейса не инициализирует суперинтерфейсы
12.5-1. Вычисление создания экземпляра
12.5-2. Динамическая диспетчеризация во время создания экземпляра
13.4.4-1. Изменение суперкласса
13.4.4-2. Введение суперкласса
13.4.6-1. Изменение тела класса
13.4.6-2. Изменение суперкласса
13.4.7-1. Изменение доступа
13.4.8-1. Добавление объявления поля
13.4.9-1. Изменение переменной на final
13.4.16-1. Изменение метода на abstract
13.4.17-1. Изменение метода на final
13.4.23-1. Добавление перегруженного метода
13.5.4-1. Удаление члена интерфейса
13.5.7-1. Добавление метода по умолчанию
14.3-1. Объявления локальных классов
14.4-1. Локальные переменные, объявленные с var
14.4.1-1. Тип локальных переменных, объявленных с var
14.7-1. Метки и идентификаторы
14.11.3-1. Переход в операторе switch
14.13-1. Оператор do
14.14-1. Расширенный for и массивы
14.14-2. Расширенный for и приведение к примитивному типу
14.15-1. Оператор break
14.16-1. Оператор continue
14.19-1. Оператор synchronized
14.20.1-1. Обработка исключения
14.20.2-1. Обработка непредвиденного исключения с помощью finally
14.21-1. Оператор yield
14.22-1. Условная компиляция
15.7.1-1. Операнд левой части вычисляется первым
15.7.1-2. Неявный операнд левой части в операторе составного присваивания
15.7.1-3. Прерывистая завершенность вычисления операнда левой части
15.7.2-1. Вычисление операндов перед операцией
15.7.4-1. Порядок вычисления при вызове метода
15.7.4-2. Прерывистая завершенность выражения аргумента
15.8.3-1. Выражение this
15.9.4-1. Порядок вычисления и обнаружение недостатка памяти
15.10.2-1. Вычисление создания массива
15.10.2-2. Создание многомерного массива
15.10.2-3. OutOfMemoryError и вычисление выражения размерности
15.10.4-1. Ссылка на массив вычисляется первой
15.10.4-2. Прерывистая завершенность вычисления ссылки на массив
15.10.4-3. null ссылка на массив
15.11.1-1. Статическая привязка для доступа к полю
15.11.1-2. Переменная получателя не имеет значения для доступа к полю static
15.11.2-1. Выражение super
15.12.2-1. Применимость метода
15.12.2-2. Тип возвращаемого значения не учитывается при выборе метода
15.12.2-3. Выбор наиболее специфичного метода
15.12.4.1-1. Ссылки на целевые объекты и методы static
15.12.4.1-2. Порядок вычисления при вызове метода
15.12.4.4-1. Переопределение и вызов метода
15.12.4.4-2. Вызов метода с использованием super
15.12.4.5-1. Подписанный вызываемый метод имеет другой стираемый тип, чем подпись метода во время компиляции
15.17.3-1. Оператор остатка для целых чисел
15.17.3-2. Оператор остатка для чисел с плавающей точкой
15.18.1-1. Конкатенация строк
15.18.1-2. Конкатенация строк и условные операторы
15.20.2-1. Оператор сравнения типов
15.26.1-1. Простое присваивание компоненту массива
15.26.2-1. Составное присваивание компоненту массива
15.26.2-2. Значение левой части составного присваивания сохраняется до вычисления правой части
15.29-1. Постоянные выражения
16-1. Определённое присваивание учитывает структуру операторов и выражений
16-2. Определённое присваивание не учитывает значения выражений
16-3. Определённое неприсваивание
17.4-1. Неправильно синхронизированные программы могут демонстрировать неожиданное поведение
17.4.5-1. Согласованность happens-before
17.4.8-1. Согласованность happens-before недостаточно
17.5-1. final поля в модели памяти Java
17.5-2. final поля для обеспечения безопасности
17.5.3-1. Агрессивное оптимизация final полей
17.6-1. Обнаружение разрыва слова
18.5.5-1. Вывод типов для шаблонов записей

© Oracle and/or its affiliates. All rights reserved.
Licensed under the Oracle Technology Network License Agreement.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API