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

时间:2017-07-19 12:05:07

标签: kotlin

在其他编程语言(如Java)中,如果要链接字段,则需要:String a, b, c, d;

是否有可能在Kotlin中链接字段,例如val a, b, c, dhere doesn`t provide any info

2 个答案:

答案 0 :(得分:4)

不,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, e.g.:

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只是删除了它作为选项。

答案 1 :(得分:1)

首先,Kotlin是一种null-safety语言,这意味着你无法在不初始化的情况下声明字段,而Kotlin对任何类型都没有默认值,即使它是 nullable ,但原始数组有一个例外,例如: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中声明统一字段/变量,因此它不会&# 39;在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;

最后,字段是Kotlin中的重组件。当你在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  
//                 e.g: this::c.getter & this::c.setter