2017-07-19 35 views

回答

4

不,Kotlin不支持聲明多個變量的聲明。

Kotlin已經從Java學到了一些好的教訓。其中之一就是變量聲明。儘管Java支持多行變量聲明,但Oracle的Java指南指出,每行僅使用一個聲明。

下面是甲骨文Java標準提到:建議

每行

一個聲明,因爲它鼓勵評論。換句話說,

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剛剛刪除作爲一個選項。

+0

Did you quote this?如果可以,你能提供鏈接嗎?會很有趣。 – guenhter

+0

@guenhter我已經更新了答案。 – chandil03

1

首先,科特林是null-safety語言,這意味着你不能沒有初始化它們聲明領域,科特林有哪怕是可空任何類型的任何默認值,但有一個例外的原始數組,例如: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 

其次,如果你關心的字段/變量的定義,它們是完全不同的。該字段/變量類型在右側,這意味着你不能在科特林聲明統一場/變量的所有聲明,所以它沒有意義在科特林,例如:

//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