Spec-Zone.ru › Java Language Specification 21

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

Java SE 21 Edition

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

Билл Джой

Гай Стил

Гилад Брача

Алекс Бакли

Дэниэл Смит

Гавин Бирман

23 августа 2023 г.

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

Содержание

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. Числовые контексты
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. Значение PackageOrTypeNames
6.5.4.1. Простые PackageOrTypeNames
6.5.4.2. Квалифицированные PackageOrTypeNames
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. Классы
END_OF_DOCUMENT_MARKER
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. Последовательности escape в текстовых блоках
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