Spec-Zone.ru › Java Language Specification 17

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

Java SE 17 Издание

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

Билл Джой

Гай Стил

Гилад Брача

Алекс Бакли

Дэниел Смит

Гавин Бирман

2021-08-09

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

Содержание

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.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. Классы
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. Интерфейсы
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 Exception
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. Эволюция классов записей
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.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. Сопоставление с шаблонами
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. Лямбда-выражения
END_OF_DOCUMENT_MARKER
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. Ограничения исключений с проверкой
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. Вывод более специфичного метода
19. Синтаксис
A. Ограниченное предоставление лицензии

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

END_OF_DOCUMENT_MARKER
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.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. Обнаружение разрыва слов

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

Spec-Zone.ru

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