Kotlin-extension

提供:Dev Guides
移動先:案内検索

Kotlin-拡張機能

この章では、「拡張」という名前のKotlinの別の新機能について学習します。 拡張機能を使用すると、メソッドの機能を継承または変更しなくても、一部の機能を追加または削除できます。 拡張は統計的に解決されます。 実際に既存のクラスを変更するわけではありませんが、ドット操作で呼び出すことができる呼び出し可能な関数を作成します。

機能拡張

関数の拡張では、Kotlinはメインクラスの外部でメソッドを定義できます。 次の例では、機能レベルで拡張機能が実装される方法を確認します。

class Alien {
   var skills : String = "null"

   fun printMySkills() {
      print(skills)
   }
}
fun main(args: Array<String>) {
   var  a1 = Alien()
   a1.skills = "JAVA"
  //a1.printMySkills()

   var  a2 = Alien()
   a2.skills = "SQL"
  //a2.printMySkills()

   var  a3 = Alien()
   a3.skills = a1.addMySkills(a2)
   a3.printMySkills()
}
fun Alien.addMySkills(a:Alien):String{
   var a4 = Alien()
   a4.skills = this.skills + " " +a.skills
   return a4.skills
}

上記の例では、「addMySkills()」という名前の「Alien」クラス内にメソッドはありませんが、クラス外の別の場所に同じメソッドを実装しています。これが拡張の魔法です。

上記のコードは、ブラウザに次の出力を生成します。

JAVA SQL

オブジェクト拡張

Kotlinは、Javaの静的機能を実装する別のメカニズムを提供します。 これは、キーワード「コンパニオンオブジェクト」を使用して実現できます。 このメカニズムを使用して、ファクトリメソッド内にクラスのオブジェクトを作成し、後でクラス名の参照を使用してそのメソッドを呼び出すことができます。 次の例では、「コンパニオンオブジェクト」を作成します。

fun main(args: Array<String>) {
   println("Heyyy!!!"+A.show())
}
class A {
   companion object {
      fun show():String {
         return("You are learning Kotlin from finddevguides.com")
      }
   }
}

上記のコードは、ブラウザに次の出力を生成します。

Heyyy!!! You are learning Kotlin from finddevguides.com

上記の例はJavaでは静的に見えますが、リアルタイムでは同じクラスのメンバー変数としてオブジェクトを作成しています。 これが拡張プロパティにも含まれている理由であり、代わりにオブジェクト拡張として呼び出すことができます。 基本的に、同じクラスのオブジェクトを拡張して、いくつかのメンバー関数を使用します。