と連鎖フィールドを宣言するために、あなたが好きですか:String a, b, c, d;
Kotlinどのように連鎖フィールドにJavaのような他のプログラミング言語で同じデータ型
それはval a, b, c, d
のように、あまりにもKotlinにおける連鎖フィールドには可能ですか? here doesn`t provide any info
と連鎖フィールドを宣言するために、あなたが好きですか:String a, b, c, d;
Kotlinどのように連鎖フィールドにJavaのような他のプログラミング言語で同じデータ型
それはval a, b, c, d
のように、あまりにもKotlinにおける連鎖フィールドには可能ですか? here doesn`t provide any info
いいえ、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
は、これをオプションとして削除しました。
まず、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
引用しましたか?もしそうならリンクを提供できますか?面白いだろうか。 – guenhter
@guenhter私は答えを更新しました。 – chandil03