Kotlin, как объявить скованные поля с одинаковым типом данных

На других языках программирования, таких как Java, если вы хотите связать поля, вам нужно: String a, b, c, d;

Возможно ли связать поля в Котлине, например, val a, b, c, d ? здесь не предоставляет никакой информации

Нет, Kotlin не поддерживает объявление нескольких переменных в инструкции.

Kotlin выучил неплохие уроки из Java. Одно из них – объявление переменной. Хотя Java поддерживает объявление нескольких переменных в строке, Oracle Java Guidelines говорит, что для каждой строки используется только одно объявление.

В Oracle Java Standard упоминается следующее:

Рекомендуется одно объявление в строке, поскольку оно поощряет комментирование. Другими словами,

 int level; // indentation level int size; // size of table 

предпочтительнее

 int level, size; 

В любом случае переменные и функции не должны быть объявлены в одной строке. Пример:

 long dbaddr, getDbaddr(); // WRONG! 

Не помещайте разные типы в одну строку. Пример:

 int foo, fooarray[]; //WRONG! 

Примечание. В приведенных выше примерах используется одно пространство между типом и идентификатором. Другая

 acceptable alternative is to use tabs, eg: int level; // indentation level int size; // size of table Object currentEntry; // currently selected table entry 

См. Эту ссылку для соглашения Oracle: http://www.oracle.com/technetwork/java/codeconventions-150003.pdf . Страница №. 14> Объявления.

Произошли некоторые огромные дебаты по этой теме type of declaration should be used for Java . Поэтому Kotlin просто удалил это как вариант.

Во-первых, Kotlin – это язык с нулевой безопасностью, что означает, что вы не можете объявлять поля без их инициализации, а Kotlin не имеет значения по умолчанию для любых типов, даже если он является нулевым , но существует исключение для примитивного массива, например: IntArray(size) значение по умолчанию, соответствующее java, равно 0 . Таким образом, вы не можете написать форму объявления поля, как в Java, например:

 //Java private String a,b,c;// they are `null` by default. private val a:String? // error: property must be initialized 

Во-вторых, если вас беспокоит определение полей / переменных, они совершенно разные. тип поля / переменной объявляется с правой стороны , что означает, что вы вообще не можете объявлять единые поля / переменные в Kotlin, поэтому это не имеет смысла в Kotlin, например:

 //Java String a,b; //Kotlin val a, b; // ^---^--- how to declare the variables type? // v-- just more than one `val` after introduce the variable types val a:String; val b:String; 

Наконец, поле является тяжелым компонентом в Котлине. когда вы объявляете поле в Java, это просто поле, не более. но в Kotlin, когда вы объявляете поле, это может быть свойство / поле. и свойство имеет поле getter / backing (?) / setter (?), например:

 // java String a; //just a field // kotlin var a:String = "a" // has a backing field, getter & setter private var b:String = "b" // it is just a field @JvmField var c:String = "c" // ^--- it is a field but it has getter/setter in reflect // eg: this::c.getter & this::c.setter