Spec-Zone.ru › Java Language Specification 8

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

Java SE 8 издание

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

Билл Джой

Гай Стил

Гилад Браха

Алекс Бакли

13 февраля 2015 г.

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

Оглавление

Предисловие к Java SE 8 изданию
1. Введение
1.1. Структура спецификации
1.2. Примерные программы
1.3. Нотация
1.4. Связь с предопределенными классами и интерфейсами
1.5. Обратная связь
1.6. Ссылки
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.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.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.7. Преобразование в ящик
5.1.8. Преобразование из ящика
5.1.9. Непроверяемое преобразование
5.1.10. Преобразование захвата
5.1.11. Преобразование строки
5.1.12. Запрещенные преобразования
5.1.13. Преобразование множества значений
5.2. Контексты присваивания
5.3. Контексты вызова
5.4. Контексты строк
5.5. Контексты приведения типов
5.5.1. Приведение ссылочных типов
5.5.2. Проверяемые и непроверяемые приведения
5.5.3. Проверяемые приведения во время выполнения
5.6. Численные контексты
5.6.1. Унарное числовое продвижение
5.6.2. Двоичное числовое продвижение
6. Имена
END_OF_DOCUMENT_MARKER
6.1. Объявления
6.2. Имена и идентификаторы
6.3. Область действия объявления
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. Объявления верхнего уровня
8. Классы
8.1. Объявления классов
8.1.1. Модификаторы класса
8.1.1.1. abstract Классы
8.1.1.2. final Классы
8.1.1.3. strictfp Классы
8.1.2. Обобщенные классы и параметры типов
8.1.3. Вложенные классы и окружающие экземпляры
8.1.4. Суперклассы и подклассы
8.1.5. Суперинтерфейсы
8.1.6. Тело класса и объявления членов
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.5.1. Объявления типов-членов статического уровня
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. Члены перечисления
9. Интерфейсы
END_OF_DOCUMENT_MARKER
9.1. Объявления интерфейсов
9.1.1. Модификаторы интерфейсов
9.1.1.1. abstract Интерфейсы
9.1.1.2. strictfp Интерфейсы
9.1.2. Обобщённые интерфейсы и параметры типов
9.1.3. Супер- и под-интерфейсы
9.1.4. Тело интерфейса и объявления членов
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. Исключение ArrayStoreException
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.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. Бинарная совместимость
END_OF_DOCUMENT_MARKER
13.1. Формат двоичного файла
13.2. Что представляет собой и чем не является бинарная совместимость
13.3. Эволюция пакетов
13.4. Эволюция классов
13.4.1. abstract классы
13.4.2. 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.5. Эволюция интерфейсов
13.5.1. public интерфейсы
13.5.2. Суперинтерфейсы
13.5.3. Члены интерфейса
13.5.4. Параметры типа интерфейса
13.5.5. Объявления полей
13.5.6. Объявления методов интерфейса
13.5.7. Эволюция типов аннотаций
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.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. Недостижимые операторы
15. Выражения
15.1. Оценка, денотация и результат
15.2. Формы выражений
15.3. Тип выражения
15.4. Выражения FP-strict
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. Lambda-выражения
15.27.1. Параметры лямбда-выражения
15.27.2. Тело лямбда-выражения
15.27.3. Тип лямбда-выражения
15.27.4. Вычисление лямбда-выражений во время выполнения
15.28. Постоянные выражения
16. Определенное присвоение
16.1. Определенное присвоение и выражения
16.1.1. Логические константные выражения
16.1.2. Оператор логического И &&
16.1.3. Оператор логического ИЛИ ||
16.1.4. Оператор логического отрицания !
16.1.5. Условный оператор ? :
16.1.6. Условный оператор ? :
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, 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. Сон и уступка
17.4. Модель памяти
17.4.1. Общие переменные
17.4.2. Действия
17.4.3. Программы и порядок выполнения
17.4.4. Порядок синхронизации
17.4.5. Порядок следования
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.3. Вывод параметризации функционального интерфейса
18.5.4. Вывод более специфичного метода
19. Синтаксис
Индекс
A. Ограниченное предоставление лицензии
END_OF_DOCUMENT_MARKER

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

3.10.5-1. Строковые литералы
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-1. Преобразование приведения для ссылочных типов
5.5.1-2. Преобразование приведения для массивов
5.5.3-1. Несовместимые типы во время выполнения
5.6.1-1. Унарное числовое продвижение
5.6.2-1. Бинарное числовое продвижение
6.1-1. Уникальные имена пакетов
6.1-2. Дескриптивные имена классов
6.1-3. Стандартные имена переменных типа
6.3-1. Область видимости объявлений типов
6.3-2. Область видимости объявлений локальных переменных
6.4-1. Попытка перекрытия локальной переменной
6.4.1-1. Перекрытие объявления поля локальной переменной
6.4.1-2. Перекрытие объявления типа другим объявлением типа
6.5.2-1. Переквалификация контекстуально неоднозначных имён
6.5.5.2-1. Квалифицированные имена типов
6.5.6.1-1. Простые имена выражений
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. Полные имена
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-3. Реализация методов суперинтерфейса
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-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.6-1. Изменение тела класса
13.4.6-2. Изменение суперкласса
13.4.7-1. Изменение доступа
13.4.8-1. Добавление объявления поля
13.4.9-1. Изменение переменной на final
13.4.9-2. Условный компилятор
13.4.16-1. Изменение метода на abstract
13.4.17-1. Изменение метода на final
13.4.23-1. Добавление перегруженного метода
13.5.3-1. Удаление члена интерфейса
13.5.6-1. Добавление метода по умолчанию
14.3-1. Объявления локальных классов
14.7-1. Метки и идентификаторы
14.11-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
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. Оператор instanceof
15.26.1-1. Простое присваивание элементу массива
15.26.2-1. Составное присваивание элементу массива
15.26.2-2. Значение левой части составного присваивания сохраняется до вычисления правой части
15.28-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