2017-07-19 12 views

答えて

4

いいえ、Kotlinは、ステートメント内の複数変数の宣言をサポートしていません。

Kotlinは、Javaからいくつかの優れた教訓を学びました。その一つが変数宣言です。 Javaでは、複数の変数宣言を1行でサポートしていますが、OracleのJavaのガイドラインでは、1行に1つの宣言のみを使用しています。

後は、OracleのJava標準に記載されている:それはコメント奨励するため、行あたり

一つの宣言が推奨されます。換言すれば、

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

は変数および関数は、同じ行に宣言されなければならない全くない場合

int level, size; 

よりも好ましいです。例:

long dbaddr, getDbaddr(); // WRONG! 

同じ行に異なるタイプを入力しないでください。例:

int foo, fooarray[]; //WRONG! 

注:上記の例では、型と識別子の間に1つのスペースを使用しています。別の

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

引用しましたか?もしそうならリンクを提供できますか?面白いだろうか。 – guenhter

+0

@guenhter私は答えを更新しました。 – chandil03

1

まず、KotlinはそれがNULL可能であっても、あなたがそれらを初期化せずにフィールドを宣言することはできません、とKotlinは、任意の種類にはデフォルト値を持っていないことを意味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 

を第二に、あなたはフィールド/変数の定義を懸念している場合、それらは全く異なっています。フィールド/変数の型は、あなたがすべてで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では、プロパティ/フィールドかもしれません。プロパティにはゲッター/バッキングフィールド(?)/セッター(?)があります。

// 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 
関連する問題