Javaとの比較
Kotlinで解決されたJavaのいくつかの問題
Kotlinは、Javaが抱える一連の問題を解決します。
- ヌル参照は型システムによって制御されます。
- ロー型がない
- Kotlinの配列は不変です。
- Kotlinには、JavaのSAM変換とは異なり、適切な関数型があります。
- ワイルドカードなしの使用サイト変性
- Kotlinにはチェック例外がありません。
- 読み取り専用と可変コレクション用の別々のインターフェース
JavaにあってKotlinにはないもの
- チェック例外
- クラスではないプリミティブ型。バイトコードは可能な限りプリミティブを使用しますが、明示的に利用することはできません。
- 静的メンバーは、コンパニオンオブジェクト、トップレベル関数、拡張関数、または
@JvmStatic
に置き換えられます。 - ワイルドカード型は、宣言サイト変性と型プロジェクションに置き換えられます。
- 三項演算子
a ? b : c
はif式に置き換えられます。 - Records
- パターンマッチング
- パッケージプライベートの可視性修飾子
KotlinにあってJavaにはないもの
- ラムダ式 + インライン関数 = パフォーマンスの高いカスタム制御構造
- 拡張関数
- ヌル安全性
- スマートキャスト (Java 16:
instanceof
のパターンマッチング) - 文字列テンプレート (Java 21: 文字列テンプレート (プレビュー))
- プロパティ
- プライマリコンストラクタ
- ファーストクラスのデリゲーション
- 変数およびプロパティ型の型推論 (Java 10: ローカル変数型推論)
- シングルトン
- 宣言サイト変性 & 型プロジェクション
- 範囲式
- 演算子オーバーロード
- コンパニオンオブジェクト
- データクラス
- コルーチン
- トップレベル関数
- デフォルト値を持つパラメータ
- 名前付きパラメータ
- 中置関数
expect
およびactual
宣言- 明示的APIモードとAPIサーフェスのより良い制御
次は何ですか?
次の方法を学びましょう:
- JavaとKotlinで文字列を使った一般的なタスクを実行する。
- JavaとKotlinでコレクションを使った一般的なタスクを実行する。
- JavaとKotlinでnull可能性を処理する。