Kotlinでは、継承など使用せずに既存のクラスを拡張することができます。
拡張関数
次のように書くことで、既存のクラスに関数を追加する事ができます。
[スコープ] fun クラス名.関数名([仮引数...]) {
処理
}
ただし、既存のクラスに既に同じシグネチャの関数が存在する場合には、既存の関数を置き換えるようなことはできません。
既存のクラスのオブジェクトは、thisとしてアクセスできます。
fun String?.isBlank():Boolean {
return this == null || this.length() == 0 || this == " "
}
このようにNullableなクラスにも関数を追加できます。
また、次のように、ジェネリックなクラスに対して、特定の型引数を指定した場合に限定して、関数を追加することもできます。
fun List<String?>.shrink(): List<String?> {
return this.filter({value -> !value.isBlank()})
}
拡張プロパティ
プロパティも関数と同様に追加可能です。
val クラス名.プロパティ名: 型
get() {
処理
}
拡張のスコープ
拡張関数や拡張プロパティはパッケージ直下に作ることになるので、そのパッケージ内では自由に使用できます。
ほかのパッケージで使用するには、拡張を実装しているパッケージをインポートする必要があります。
ほかのパッケージで使用するには、拡張を実装しているパッケージをインポートする必要があります。
0 件のコメント:
コメントを投稿