Javaとの比較
Kotlin で対処される Java のいくつかの問題
Kotlin は Java が抱える一連の問題を修正します。
- Null 参照は型システムによって制御されます。
- Raw types がありません。
- Kotlin の配列は不変です。
- Kotlin には、Java の SAM 変換とは対照的に、適切な関数型があります。
- ワイルドカードなしのUse-site variance (利用場所変性)
- Kotlin にはチェックされる例外がありません。
- 読み取り専用とミュータブル (mutable) なコレクションの分離されたインターフェース
Java にあって Kotlin にないもの
- チェックされる例外
- クラスではないプリミティブ型。バイトコードは可能な限りプリミティブを使用しますが、明示的に利用できるわけではありません。
- Static メンバーは、コンパニオンオブジェクト、トップレベル関数、拡張関数、または@JvmStaticに置き換えられます。
- ワイルドカード型は、宣言場所変性および型プロジェクションに置き換えられます。
- 三項演算子
a ? b : c
は、if 式に置き換えられます。 - Records
- Pattern Matching
- package-private visibility modifier (可視性修飾子)
Kotlin にあって Java にないもの
- ラムダ式 + インライン関数 = 実行効率の高いカスタム制御構造
- 拡張関数
- Null-safety (Null 安全)
- Smart casts (スマートキャスト) (Java 16: Pattern Matching for instanceof)
- String templates (文字列テンプレート) (Java 21: String Templates (Preview))
- プロパティ
- Primary constructors (プライマリコンストラクタ)
- First-class delegation (ファーストクラスデリゲーション)
- Type inference (型推論) for variable and property types (Java 10: Local-Variable Type Inference)
- Singletons (シングルトン)
- Declaration-site variance & Type projections (宣言場所変性と型プロジェクション)
- Range expressions (範囲式)
- Operator overloading (演算子のオーバーロード)
- Companion objects (コンパニオンオブジェクト)
- Data classes (データクラス)
- Coroutines (コルーチン)
- Top-level functions (トップレベル関数)
- Default arguments (デフォルト引数)
- Named parameters (名前付き引数)
- Infix functions (infix 関数)
- Expect and actual declarations (期待と実際の宣言)
- Explicit API mode (明示的な API モード) および better control of API surface (API サーフェスのより良い制御)
次は何をしますか?
以下について学びます。