Kotlin-generics

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

コトリン-ジェネリック

Javaと同様に、KotlinはGenericsと呼ばれるより高次の変数型付けを提供します。 この章では、KotlinがGenericsを実装する方法、および開発者としてGenericsライブラリ内で提供される機能を使用する方法を学習します。 実装に関しては、ジェネリックはJavaにかなり似ていますが、Kotlin開発者はKotlinコードをより読みやすく、開発者が簡単にするために、2つの新しいキーワード*“ out” および“ in” *を導入しました。

Kotlinでは、クラスと型はまったく異なる概念です。 例のとおり、ListはKotlinのクラスですが、List <String>はKotlinのタイプです。 次の例は、ジェネリックがKotlinで実装される方法を示しています。

fun main(args: Array<String>) {
   val integer: Int = 1
   val number: Number = integer
   print(number)
}

上記のコードでは、1つの「整数」を宣言し、後でその変数を数値変数に割り当てました。 これは、「Int」がNumberクラスのサブクラスであるため可能です。したがって、実行時に型変換が自動的に行われ、「1」として出力が生成されます。

Kotlinのジェネリックについてもう少し学習しましょう。 アプリケーションで使用するデータ型がわからない場合は、汎用データ型を使用することをお勧めします。 一般的に、Kotlinジェネリックは <T> で定義されます。ここで、「T」はテンプレートを表し、Kotlinコンパイラーによって動的に決定できます。 次の例では、Kotlinプログラミング言語で汎用データ型を使用する方法を説明します。

fun main(args: Array<String>) {
   var objet = genericsExample<String>("JAVA")
   var objet1 = genericsExample<Int>(10)
}
class genericsExample<T>(input:T) {
   init {
      println("I am getting called with the value "+input)
   }
}

上記のコード部分では、 <T> として表される汎用戻り型を持つ1つのクラスを作成しています。 mainメソッドを見てください。このメソッドでは、このクラスのオブジェクトを作成しながら、値の型を証明することにより、実行時にその値を動的に定義しています。 これは、ジェネリックがKotlinコンパイラーによって解釈される方法です。 コーディンググラウンドでこのコードを実行すると、ブラウザーに次の出力が表示されます。

I am getting called with the value JAVA
I am getting called with the value 10

ジェネリックタイプをそのスーパータイプのいずれかに割り当てる場合は、「out」キーワードを使用する必要があり、ジェネリックタイプをそのサブタイプのいずれかに割り当てる場合は、「in」を使用する必要がありますキーワード。 次の例では、「out」キーワードを使用します。 同様に、「in」キーワードを使用して試すことができます。

fun main(args: Array<String>) {
   var objet1 = genericsExample<Int>(10)
   var object2 = genericsExample<Double>(10.00)
   println(objet1)
   println(object2)
}
class genericsExample<out T>(input:T) {
   init {
      println("I am getting called with the value "+input)
   }
}

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

I am getting called with the value 10
I am getting called with the value 10.0
genericsExample@28d93b30
genericsExample@1b6d3586