Java 10 поставляется с новым локальным переменным. Токен var
может использоваться для уменьшения шаблона, необходимого при объявлении переменной. например.
var s = "hello";
В соответствии с Какой тип токена точно "var " в Java 10? этот новый токен не является" ключевым словом ", а скорее" зарезервированным типом имени ". Таким образом, слово" var" все еще может использоваться как имя переменной, которое поддерживает обратную совместимость с существующим кодом.
var var = "you can do this";
Когда функция "module" была введена в Java 9, тип этого нового токена (наряду с его 9 другими связанными токенами) назывался "ограниченными ключевыми словами". То есть они считались ключевыми словами только в определенных контекстах конкретных ограничений. например вы все равно можете иметь переменные, называемые модулем.
Когда новые возможности языка были добавлены в С++ таким образом, что они не сбивали существующие пользовательские символы, они назывались "контекстно-зависимые ключевые слова".
Существует ли концептуальная разница между новым токеном "зарезервированное имя типа" var
в Java 10 и "контекстно-зависимым ключевым словом" или "ограниченным ключевым словом". То есть не новый токен var
действительно просто ключевое слово при определенных ограничениях для конкретного контекста. Если это так, то почему его просто не добавили в список "ограниченных ключевых слов"?
Чтобы добавить к моей путанице, в текущей черновике JLS говорится, что:
Последовательность символов var обычно рассматривается как идентификатор, но в некоторых особых случаях действует, как если бы это было ключевое слово.
Это определение, безусловно, звучит как "ограниченное ключевое слово".