Kotlin如何声明具有相同数据类型的链接字段

在其他编程语言如Java中,如果你想链接字段,你喜欢: String a, b, c, d;

是否有可能链接科特林的领域,如val a, b, c, d ? 这里没有提供任何信息

不, Kotlin不支持在声明中声明多个变量。

Kotlin已经从Java学到了一些好的教训。 其中之一是变量声明。 尽管Java支持多行变量声明,但是Oracle的Java指南指出,每行只能使用一个声明。

以下在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