Используйте var в объявлении поля - PullRequest
0 голосов
/ 13 февраля 2019

Итак, начиная с Java 9, мы можем использовать var для объявления локальных переменных:

var s = "cool";

Есть ли способ использовать аналогичную конструкцию при объявлении полей?

class Container {
  final var s = "cool"; // does not compile tmk
}

не похоже на то, что я могу сказать.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2019

Нет, нет .

var - это не ключевое слово, а идентификатор с особым значением в качестве типа объявления локальной переменной (§14.4, §14.14.1, §14.14.2, §14.20.3).

var можно использовать только в операторах объявления локальных переменных с синтаксисом

LocalVariableDeclarationStatement:
    LocalVariableDeclaration ;
LocalVariableDeclaration:
    {VariableModifier} LocalVariableType VariableDeclaratorList
LocalVariableType:
    UnannType 
    var

Объявления полей doне содержат синтаксис, где разрешен специальный идентификатор var:

FieldDeclaration:
    {FieldModifier} UnannType VariableDeclaratorList ;
0 голосов
/ 13 февраля 2019

есть ли способ использовать подобную конструкцию при объявлении полей?

Нет.

Согласно JEP 286: вывод типа локальной переменной :

Эта обработка будет ограничена локальными переменными с инициализаторами, индексами в расширенном цикле forи местные жители, объявленные в традиционном цикле for; было бы недоступно для формальных методов, формальных конструкторов, типов возвращаемых методов, полей , формальных элементов перехвата или любого другого типа объявления переменных.

...