что такое зарезервированные слова в java
Ключевые слова Java
Ключевые слова Java-это зарезервированные слова, используемые компилятором Java. Эти ключевые слова имеют особое значение для компилятора Java. Зарезервированные ключевые слова
Ключевые слова Java-это зарезервированные слова, используемые компилятором Java. Эти ключевые слова имеют особое значение для компилятора Java. Зарезервированные ключевые слова помогают нам в написании кода и помогают компилятору в понимании кода и создании байт-кода.
Мы не можем создавать идентификаторы (класс, переменная, метод), имеющие то же имя, что и зарезервированное ключевое слово.
Ключевые слова Java
Java содержит 64 зарезервированных ключевых слова. Мы можем разделить их на следующие категории.
Давайте кратко рассмотрим все эти ключевые слова.
1. Примитивные типы и пустота
Эти ключевые слова используются для создания переменных примитивных типов данных. Пустота используется, когда метод ничего не возвращает.
Вот простой пример, показывающий использование этих ключевых слов. Обратите внимание на использование ключевого слова void в основной функции java, чтобы указать, что оно ничего не возвращает.
2. Ключевые слова-Модификаторы
Эти ключевые слова используются для указания области действия переменной, методов и класса.
Рекомендуемые показания :
Вот простой пример, показывающий использование ключевых слов-модификаторов в программе Java.
3. Ключевые слова Объявлений
Эти ключевые слова используются для создания сущности в Java.
4. Ключевые слова Потока Управления
Эти ключевые слова используются для определения потока выполнения кода java.
Вот пример, показывающий использование ключевых слов потока управления в Java.
5. Разные Ключевые слова
Как проверить, является ли строка ключевым словом?
Мы можем использовать Источник Version.is Ключевое слово() метод проверки того, является ли строка частью зарезервированных ключевых слов или нет.
Вывод
Ключевые слова Java определяют способ написания кода. Это свод правил для компилятора java для интерпретации кода и генерации байт-кода.
Что такое зарезервированные слова в java
[an error occurred while processing this directive]
Программирование на языке Java. Введение в язык Java
[an error occurred while processing this directive](none)
Исходный файл на языке Java—это текстовый файл, содержащий в себе одно или несколько описаний классов. Транслятор Java предполагает, что исходный текст программ хранится в файлах с расширениями Java. Получаемый в процессе трансляции код для каждого класса записывается в отдельном выходном файле, с именем совпадающем с именем класса, и расширением class.
Прежде всего, в этой главе мы напишем, оттранслируем, и запустим каноническую программу «Hello World». После этого мы рассмотрим все существенные лексические элементы, воспринимаемые Java-транслятором: пробелы, комментарии, ключевые слова, идентификаторы, литералы, операторы и разделители. К концу главы вы получите достаточно информации для того чтобы самостоятельно ориентироваться в хорошей Java-программе.
Hello World
Итак, вот ваша первая Java-программа:
Для того, чтобы поработать с приведенными в книге примерами вам нужно получить по сети из Sun Microsystems и установить Java Developers Kit—пакет для разработки Java-приложений (http://java.sun.com/products/jdk).
Язык Java требует, чтобы весь программный код был заключен внутри поименованных классов. Приведенный выше текст примера надо записать в файл HelloWorld.java. Обязательно проверьте соответствие прописных букв в имени файла тому же в названии содержащегося в нем класса. Для того, чтобы оттранслировать этот пример необходимо запустить транслятор Java—javac, указав в качестве параметра имя файла с исходным текстом:
Транслятор создаст файл HelloWorld.class с независимым от процессора байт-кодом нашего примера. Для того, чтобы исполнить полученный код, необходимо иметь среду времени выполнения языка Java (в нашем случае это программа java), в которую надо загрузить новый класс для исполнения. Подчеркнем, что указывается имя класса, а не имя файла, в котором этот класс содержится.
Полезного сделано мало, однако мы убедились, что установленный Java-транслятор и среда времени выполнения работают.
Шаг за шагом
Конечно, HelloWorld—это тривиальный пример. Однако даже такая простая программа новичку в языке Java может показаться пугающе сложной, поскольку она знакомит вас с массой новых понятий и деталей синтаксиса языка Давайте внимательно пройдемся по каждой строке нашего первого примера, анализируя те элементы, из которых состоит Java-программа.
Строка 1
В этой строке использовано зарезервированное слово class. Оно говорит транслятору, что мы собираемся описать новый класс. Полное описание класса располагается между открывающей фигурной скобкой в первой строке и парной ей закрывающей фигурной скобкой в строке 5. Фигурные скобки в Java используются точно так же, как в языках С и С++.
Строка 2
Такая, на первый взгляд, чрезмерно сложная строка примера является следствием важного требования, заложенного при разработке языка Java. Дело в том, что в Java отсутствуют глобальные функции. Поскольку подобные строки будут встречаться в большинстве примеров первой части книги, давайте пристальнее рассмотрим каждый элемент второй строки.
public
Разбивая эту строку на отдельные лексемы, мы сразу сталкиваемся с ключевым словом public. Это—модификатор доступа, который позволяет программисту управлять видимостью любого метода и любой переменной. В данном случае модификатор доступа public означает, что метод main виден и доступен любому классу. Существуют еще 2 указателя уровня доступа—private и protected, с которыми мы более детально познакомимся в главе 8.
static
Следующее ключевое слово—static. С помощью этого слова объявляются методы и переменные класса, используемые для работы с классом в целом. Методы, в объявлении которых использовано ключевое слово static, могут непосредственно работать только с локальными и статическими переменными.
У вас нередко будет возникать потребность в методах, которые возвращают значение того или иного типа: например, int для целых значений, float—для вещественных или имя класса для типов данных, определенных программистом. В нашем случае нужно просто вывести на экран строку, а возвращать значение из метода main не требуется. Именно поэтому и был использован модификатор void. Более детально этот вопрос обсуждается в главе 4.
Наконец, мы добрались до имени метода main. Здесь нет ничего необычного, просто все существующие реализации Java-интерпретаторов, получив команду интерпретировать класс, начинают свою работу с вызова метода main. Java-транслятор может оттранслировать класс, в котором нет метода main. А вот Java-интерпретатор запускать классы без метода main не умеет.
Все параметры, которые нужно передать методу, указываются внутри пары круглых скобок в виде списка элементов, разделенных символами «;» (точка с запятой). Каждый элемент списка параметров состоит из разделенных пробелом типа и идентификатора. Даже если у метода нет параметров, после его имени все равно нужно поставить пару круглых скобок. В примере, который мы сейчас обсуждаем, у метода main только один параметр, правда довольно сложного типа.
Элемент String args[] объявляет параметр с именем args, который является массивом объектов—представителей класса String. Обратите внимание на квадратные скобки, стоящие после идентификатора args. Они говорят о том, что мы имеем дело с массивом, а не с одиночным элементом указанного типа. Мы вернемся к обсуждению массивов в следующей главе, а пока отметим, что тип String—это класс. Более детально о строках мы поговорим в главе 9.
Строка 3
В этой строке выполняется метод println объекта out. Объект out объявлен в классе OutputStream и статически инициализируется в классе System. В главах 9 и 13 у вас будет шанс познакомиться с нюансами работы классов String и OutputStream.
Закрывающей фигурной скобкой в строке 4 заканчивается объявление метода main, а такая же скобка в строке 5 завершает объявление класса HelloWorld.
Лексические основы
Теперь, когда мы подробно рассмотрели минимальный Java-класс, давайте вернемся назад и рассмотрим общие аспекты синтаксиса этого языка. Программы на Java—это набор пробелов, комментариев, ключевых слов, идентификаторов, литеральных констант, операторов и разделителей.
Пробелы
Java—язык, который допускает произвольное форматирование текста программ. Для того, чтобы программа работала нормально, нет никакой необходимости выравнивать ее текст специальным образом. Например, класс HelloWorld можно было записать в двух строках или любым другим способом, который придется вам по душе. И он будет работать точно так же при условии, что между отдельными лексемами (между которыми нет операторов или разделителей) имеется по крайней мере по одному пробелу, символу табуляции или символу перевода строки.
Комментарии
Хотя комментарии никак не влияют на исполняемый код программы, при правильном использовании они оказываются весьма существенной частью исходного текста. Существует три разновидности комментариев: комментарии в одной строке, комментарии в нескольких строках и, наконец, комментарии для документирования. Комментарии, занимающие одну строку, начинаются с символов // и заканчиваются в конце строки. Такой стиль комментирования полезен для размещения кратких пояснений к отдельным строкам кода:
Для более подробных пояснений вы можете воспользоваться комментариями, размещенными на нескольких строках, начав текст комментариев символами /* и закончив символами */ При этом весь текст между этими парами символов будет расценен как комментарий и транслятор его проигнорирует.
Третья, особая форма комментариев, предназначена для сервисной программы javadoc, которая использует компоненты Java-транслятора для автоматической генерации документации по интерфейсам классов. Соглашение, используемое для комментариев этого вида, таково: для того, чтобы разместить перед объявлением открытого (public) класса, метода или переменной документирующий комментарий, нужно начать его с символов /** (косая черта и две звездочки). Заканчивается такой комментарий точно так же, как и обычный комментарий—символами */. Программа javadoc умеет различать в документирующих комментариях некоторые специальные переменные, имена которых начинаются с символа @. Вот пример такого комментария:
Зарезервированные ключевые слова
Зарезервированные ключевые слова—это специальные идентификаторы, которые в языке Java используются для того, чтобы идентифицировать встроенные типы, модификаторы и средства управления выполнением программы. На сегодняшний день в языке Java имеется 59 зарезервированных слов (см. таблицу 2). Эти ключевые слова совместно с синтаксисом операторов и разделителей входят в описание языка Java. Они могут применяться только по назначению, их нельзя использовать в качестве идентификаторов для имен переменных, классов или методов.
abstract | boolean | break | byte | byvalue |
case | cast | catch | char | class |
const | continue | default | do | double |
else | extends | false | final | finally |
float | for | future | generic | goto |
if | implements | import | inner | instanceof |
int | interface | long | native | new |
null | operator | outer | package | private |
protected | public | rest | return | short |
static | super | switch | syncronized | this |
throw | throws | transient | true | try |
var | void | volatile | while |
Отметим, что слова byvalue, cast, const, future, generic, goto, inner, operator, outer, rest, var зарезервированы в Java, но пока не используются Кроме этого, в Java есть зарезервированные имена методов (эти методы наследуются каждым классом, их нельзя использовать, за исключением случаев явного переопределения методов класса Object).
clone | equals | finalize | getClass | hashCode |
notify | notifyAll | toString | wait |
Идентификаторы
Литералы
Константы в Java задаются их литеральным представлением. Целые числа, числа с плавающей точкой, логические значения, символы и строки можно располагать в любом месте исходного кода. Типы будут рассмотрены в главе 4.
Целые литералы
Целые числа—это тип, используемый в обычных программах наиболее часто. Любое целочисленное значение, например, 1, 2, 3, 42—это целый литерал. В данном примере приведены десятичные числа, то есть числа с основанием 10—именно те, которые мы повседневно используем вне мира компьютеров. Кроме десятичных, в качестве целых литералов могут использоваться также числа с основанием 8 и 16—восьмеричные и шестнадцатиричные. Java распознает восьмеричные числа по стоящему впереди нулю. Нормальные десятичные числа не могут начинаться с нуля, так что использование в программе внешне допустимого числа 09 приведет к сообщению об ошибке при трансляции, поскольку 9 не входит в диапазон 0.. 7, допустимый для знаков восьмеричного числа. Шестнадцатиричная константа различается по стоящим впереди символам нуль-х (0х или 0Х). Диапазон значений шестнадцатиричной цифры—0.. 15, причем в качестве цифр для значений 10.. 15 используются буквы от А до F (или от а до f). С помощью шестнадцатиричных чисел вы можете в краткой и ясной форме представить значения, ориентированные на использование в компьютере, например, написав Oxffff вместо 65535.
Целые литералы являются значениями типа int, которое в Java хранится в 32-битовом слове. Если вам требуется значение, которое по модулю больше, чем приблизительно 2 миллиарда, необходимо воспользоваться константой типа long. При этом число будет храниться в 64-битовом слове. К числам с любым из названных выше оснований вы можете приписать справа строчную или прописную букву L, указав таким образом, что данное число относится к типу long. Например, Ox7ffffffffffffffL или 9223372036854775807L—это значение, наибольшее для числа типа long.
Литералы с плавающей точкой
Логические литералы
У логической переменной может быть лишь два значения—true (истина) и false (ложь). Логические значения true и false не преобразуются ни в какое числовое представление. Ключевое слово true в Java не равно 1, a false не равно 0. В Java эти значения могут присваиваться только переменным типа boolean либо использоваться в выражениях с логическими операторами.
Символьные литералы
Символы в Java—это индексы в таблице символов UNICODE. Они представляют собой 16-битовые значения, которые можно преобразовать в целые числа и к которым можно применять операторы целочисленной арифметики, например, операторы сложения и вычитания. Символьные литералы помещаются внутри пары апострофов (‘ ‘). Все видимые символы таблицы ASCII можно прямо вставлять внутрь пары апострофов:—’a’, ‘z’, ‘@’. Для символов, которые невозможно ввести непосредственно, предусмотрено несколько управляющих последовательностей.
Управляющая последовательность | Описание |
---|---|
\ddd | Восьмеричный символ (ddd) |
\uxxxx | Шестнадцатиричный символ UNICODE (xxxx) |
\’ | Апостроф |
\» | Кавычка |
\\ | Обратная косая черта |
\r | Возврат каретки (carriage return) |
\n | Перевод строки (line feed, new line) |
\f | Перевод страницы (form feed) |
\t | Горизонтальная табуляция (tab) |
\b | Возврат на шаг (backspace) |
Строчные литералы
Строчные литералы в Java выглядят точно также, как и во многих других языках—это произвольный текст, заключенный в пару двойных кавычек («»). Хотя строчные литералы в Java реализованы весьма своеобразно (Java создает объект для каждой строки), внешне это никак не проявляется. Примеры строчных литералов: «Hello World!»; «две\строки; \ А это в кавычках\»». Все управляющие последовательности и восьмеричные / шестнадцатиричные формы записи, которые определены для символьных литералов, работают точно так же и в строках. Строчные литералы в Java должны начинаться и заканчиваться в одной и той же строке исходного кода. В этом языке, в отличие от многих других, нет управляющей последовательности для продолжения строкового литерала на новой строке.
Операторы
Оператор—это нечто, выполняющее некоторое действие над одним или двумя аргументами и выдающее результат. Синтаксически операторы чаще всего размещаются между идентификаторами и литералами. Детально операторы будут рассмотрены в главе 5, их перечень приведен в таблице 3. 3.
Разделители
Лишь несколько групп символов, которые могут появляться в синтаксически правильной Java-программе, все еще остались неназваннами. Это—простые разделители, которые влияют на внешний вид и функциональность программного кода.
Символы | Название | Для чего применяются |
---|---|---|
( ) | круглые скобки | Выделяют списки параметров в объявлении и вызове метода, также используются для задания приоритета операций в выражениях, выделения выражений в операторах управления выполнением программы, и в операторах приведения типов. |
фигурные скобки | Содержат значения автоматически инициализируемых массивов, также используются для ограничения блока кода в классах, методах и локальных областях видимости. | |
[ ] | квадратные скобки | Используются в объявлениях массивов и при доступе к отдельным элементам массива. |
; | точка с запятой | Разделяет операторы. |
, | запятая | Разделяет идентификаторы в объявлениях переменных, также используется для связи операторов в заголовке цикла for. |
. | точка | Отделяет имена пакетов от имен подпакетов и классов, также используется для отделения имени переменной или метода от имени переменной. |
Переменные
Переменная—это основной элемент хранения информации в Java-программе. Переменная характеризуется комбинацией идентификатора, типа и области действия. В зависимости от того, где вы объявили переменную, она может быть локальной, например, для кода внутри цикла for, либо это может быть переменная экземпляра класса, доступная всем методам данного класса. Локальные области действия объявляются с помощью фигурных скобок.
Объявление переменной
Основная форма объявления переменной такова:
Тип—это либо один из встроенных типов, то есть, byte, short, int, long, char, float, double, boolean, либо имя класса или интерфейса. Мы подробно обсудим все эти типы в следующей главе. Ниже приведено несколько примеров объявления переменных различных типов. Обратите внимание на то, что некоторые примеры включают в себя инициализацию начального значения. Переменные, для которых начальные значения не указаны, автоматически инициализируются нулем.
Объявляет три целых переменных а, b, с.
Объявляет еще три целых переменных, инициализирует d и f.
Инициализирует z. double pi = 3. 14159;
Объявляет число пи (не очень точное, но все таки пи).
Переменная х получает значение ‘х’.
В приведенном ниже примере создаются три переменные, соответствующие сторонам прямоугольного треугольника, а затем c помощью теоремы Пифагора вычисляется длина гипотенузы, в данном случае числа 5, величины гипотенузы классического прямоугольного треугольника со сторонами 3-4-5.
Ваш первый шаг
Мы уже многого достигли: сначала написали небольшую программу на языке Java и подробно рассмотрели, из чего она состоит (блоки кода, комментарии). Мы познакомились со списком ключевых слов и операторов, чье назначение будет подробно объяснено в дальнейших главах. Теперь вы в состоянии самостоятельно различать основные части любой Java-программы и готовы к тому, чтобы приступить к чтению главы 4, в которой подробно рассматриваются простые типы данных.
Java reserved keywords.
Jul 9, 2019 · 7 min read
В языках программирования всегда есть зарезервированные ключевые слова, употребить которые в том или ином контексте невозможно. Хотите написать « String can do anything!”»? Можете написать, вот только программа не скомпилируется, ибо ключевое слово class используется для объявления класса и применить его в качестве имени переменной не получится.
Ниже расположена схема зарезервированных слов в джаве. Все ли слова вам знакомы?
Кто использовал strictfp? А чистый assert без JUnit’a? Есть любители (‘ извращений’) сокращений имён переменных до « _»?
Всего JDK 12 имеет 65 з а резервированных слов. В спецификации говорится, что литералы и var — это не совсем ключевые слова, но всё же к ним их можно отнести.
Unused keywords — (‘ бесполезные’) не имеющие никакого значения, но в то же время зарезервированные слова. Это нужно, чтобы нерадивые разработчики не создавали путаниц как для человека, так и для машины, если вдруг захотят назвать этим словом переменную или класс.
«Ключевые слова const и goto зарезервированы, хоть и не используются на данный момент. Это может позволить компилятору Java выводить более ясные сообщения об ошибках, если эти ключевые слова C++ будут некорректно использоваться в программах.»
Restricted keywords — а эти слова пришли к нам с модульной системой в JDK 9. Да, их запросто можно использовать в качестве имён переменных или классов, зарезервированы они только в описании модулей. Сделано это для обратной совместимости с написанными ранее программами ради любителей «очевидных» имён переменных.
exports — указывает, что код в конкретном пакете доступен для использования кодом в других модулях.
module — используется для объявления модуля.
open — указывает, что все пакеты в модуле доступны для использования кодом в других модулях.
opens — получает доступ ко всему коду в другом модуле через рефлексию.
provides — предоставляет доступ к интерфейсу сервиса.
requires — указывает зависимость текущего модуля от другого модуля (сервиса).
to — обозначает код, который имеет разрешение на использование определенного фрагмента кода.
transitive — транзитивная зависимость, обозначающая, что если модулю А требуется модуль Б, то модулю Б будет предоставлен доступ к модулю А автоматически.
uses — указывает, что модуль использует интерфейс сервиса.
with — определяет имплементацию предоставляемого интерфейса сервиса.
Type name — restricted local variable type, особое, долгожданное многими слово var, которое нельзя использовать в качестве имени класса, т.к. оно зарезервировано для обозначения «динамической» типизации. В кавычках, ибо на самом деле тип подставляется в процессе компиляции. А вот именем переменной var может запросто являться:
« var — это не совсем ключевое слово, а скорее идентификатор со специальным значением в качестве объявления типа локальной переменной или типа формального параметра лямбда-выражения.»
Used keywords — а эти зарезервированные слова активно используются и их применение в качестве имени переменной или класса недопустимо.
Кстати, имена в джаве регистрозависимы, поэтому допускается следующее написание:
Literals: true & false — это скорее булевские литералы, а null — это скорее null-литерал, нежели ключевые слова, но мы их всё равно любим и используем только по назначению.
Other: “ _ ” ( underscore) — до java 9 использование подчёркивания в качестве имён было легально (хоть и аморально). Но с приходом JEP 302 всё изменилось и вскоре подчёркивание стало ключевым словом (или скорее символом?).
«Во многих языках распространено использование подчёркивания для обозначения безымянных лямбда-параметров (и аналогично для параметров методов и исключений):
Это позволяет добиться более сильной статической проверки неиспользуемых аргументов, а также помечать несколько аргументов как неиспользуемые.»
Приведу ещё описание нескольких наиболее интересных или редких (да, да, это про тебя strictfp) ключевых слов:
void — это не просто обозначение, что метод не возвращает никакого значения. void — это и есть тип возврата. Т.е. методы, помеченные void, на самом деле возвращают тип void. Сам по себе void определен как неполный тип, и не может быть использован вместо своих полных собратьев, например, в качестве типа параметра функции.
А ещё есть класс Void, но это уже совсем другая история.
Чтобы не плодить новых ключевых слов, зачастую используют уже существующие, более-менее подходящие по смыслу. Пример тому — дженерики. С их появлением решили использовать два уже имеющихся слова extends и super. Раньше они означали только расширение класса/интерфейса и обращение к родительскому классу, соответственно. Теперь же при обрамлении этих слов в <> компилятор понимает, что они относятся к дженерикам. Например:
в коллекции opapa находятся элементы Object или его супертипы (вышестоящие — родители, прародители и т.д.), а в коллекции opapa2 находятся элементы Object или расширяющие его типы-классы (нижестоящие — наследники).
Пытливый читатель уже заметил, что представленные в примере записи несут в себе вагон и маленькую тележку глубокой осмысленности, чуждой обычным кодерам. Верно, Object — это « Бог» среди классов, выше Бога не может быть никого, а ниже Бога находится абсолютно вся челядь (о чём нам и подсказывает IDE). Посему смысл подобных записей останется за кадром и в умах определённого круга лиц.
assert — слово появилось с версии Java 1.4 и по умолчанию его использование равно его не использованию. Чтобы оно заработало, нужно включить опцию JVM «-ea». Само по себе слово является проверкой выражения:
и в случае ложного результата выдаёт эксепшн:
native — обозначает, что тело метода написано не в божественной Java, а на каком-то другом непрогрессивном языке (Си, Би, плюсЫ, минусЫ, решёткИ и т.д.). При этом мы из джавы можем дёргать данный метод и получать результат. Используется зачастую ленивыми программистами для работы с уже имеющейся внешней компонентой, вместо написания своей, либо для доступа к специфическим возможностям ОС. Пример из JDK:
synchronized — синхронизация метода или блока между тредами, т.е. один тред зашёл внутрь и делает свои дела, пока остальные терпят снаружи.
volatile — брать значение переменной каждый раз из общей памяти, а не из локального процессорного кэша. Зачем? А вот когда ты на wiki прочитал поразившую тебя до глубины души научную статью 5 лет назад про то, что Земля плоская, т.к. её затянуло в Чёрную Дыру и сплющило под воздействием сильной гравитации, то до сих пор её рассказываешь друзьям в неизменном виде по памяти, хотя результаты исследований уже через неделю после выхода были опровергнуты, а статья обновлена. В этом случае volatile заставил бы тебя перед каждой историей другу перечитывать статью на wiki.
transient — не учитывать определённую переменную при сериализации: ни сохранять, ни восстанавливать её, в общем, игнорировать по максимуму.
strictfp — strict floating-point. На разных платформах аппаратное обеспечение может выдавать разную точность при вычислениях, и до Java 1.2 все промежуточные результаты вычислений автоматически приводились в соответствие со стандартами IEEE 754 для одинарной (single, float) или двойной (double) точности во избежание арифметического переполнения (overflow) или недостаточного значения (underflow). Но с версии Java 1.2 промежуточные результаты по умолчанию могут превышать стандартные диапазоны и выдавать максимально возможную точность, что полезно в авиа или науке. Так что если вы хотите не точности, а переносимости между платформами, или вашего заказчика подёргивает от страшных слов overflow & underflow, то смело ставьте перед классом, интерфейсом или методом слово strictfp, тогда все вычисления с плавающей точкой внутри таких методов, будут ограничиваться и приводиться к стандарту IEEE.
Заключение:
С течением времени в джаву добавляются новые ключевые слова, и никто не застрахован от того, что ваши имена переменных в будущей версии окажутся нелегальны. Но разработчики JDK всегда стараются сделать максимальную совместимость с ранее написанными программами, в связи с чем, например, при вводе новых ключевых слов ограничивают области их применения, либо предлагают использовать составные выражения, которые и ранее разработчики не могли бы использовать в качестве имён переменных из-за разделения слов дефисом. Вот некоторые ключевые слова, которые потенциально могут появиться в будущем:
— `package-private` (модификатор уровня доступа, опускающийся на данный момент)
— `public-read` (публично читаемый, приватно записываемый)
— `eventually-final` (то же, что сейчас предполагается делать аннотацией `@Stable`)
— `semi-final` (альтернатива `sealed`)
— `exhaustive-switch` (включение проверки полноты switch, т.е. все ли возможные значения в операторе switch были перечислены)
— `enum-class`, `annotation-class`, `record-class` (как более наглядная альтернатива некоторым имеющимся использованиям `enum` and `@interface`)
— `this-class` (для описания литерала класса для текущего класса)
— `this-return` (для маркировки сеттера или метода билдера как возвращающего своего приемника)
А какие ключевые слова Вы хотели бы добавить в язык?
И вопрос на засыпку: справится ли с подстановкой goto в качестве имени переменной всемогущая рефлексия? А в качестве имени класса?