演算子の違い is と Kotlin の as
この記事では、Kotlin の is
演算子と as
演算子の違いを紹介します。 これらの演算子の使用法は似ているように見えるかもしれませんが、それらは異なります。
Kotlin is
演算子
Kotlin is
演算子は、型チェックに使用されます。 インターフェイスに異なる変数を持つ複数のクラスがあり、異なるメソッドでパブリック変数を交換可能に使用したいとします。
その場合、両方のメソッドで必要なパラメーターのデータ型が似ているかどうかを確認する必要があります。 データ型が類似していない場合、コードはエラーをスローします。
たとえば、あるメソッドがデータ型 String
のパラメーターを必要とする場合、渡す変数のデータ型を確認する必要があります。 Kotlin の is
演算子を使用すると、これを行うことができます。
ブール値を返し、is
演算子の両方のオペランドが同じデータ型の場合、true
を返します。 それ以外の場合は、false
を返します。
Kotlin is
演算子は型チェック演算子です。 したがって、これを使用して、変数のデータ型が想定どおりかどうかを確認できます。
コード例:
fun main(args: Array<String>) {
var s: Any = "Hey, this is Kotlin programming!"
val r = s is String
println("The variable s is a String: " + r)
}
出力:
The variable s is a String: true
Kotlin の is
演算子は、Java の instanceof
演算子と同等です。 したがって、それを使用してクラスのオブジェクトをチェックできます。
コード例:
class exampleClass {
var v: String = "Kotlin Programming!"
fun exampleFunc() {
println("Official Android language is - " + v)
}
}
fun main(args: Array<String>) {
val obj = exampleClass() // Creating an object
obj.exampleFunc()
val result = obj is exampleClass // Using the Kotlin is operator
println("The object obj is an instance of the class exampleClass: " + result)
}
出力:
Official Android language is - Kotlin Programming!
The object obj is an instance of the class exampleClass: true
Kotlin as
演算子
Kotlin の as
演算子は、明示的な型キャストに使用されます。 Kotlin as
は、実行時に安全な演算子ではありません。
誤って間違ったオブジェクトを渡すと、as
演算子がエラーになります。 したがって、常に Kotlin のセーフ キャスト演算子 as?
を使用することをお勧めします。
as?
可能であれば、演算子はキャストされた値を返します。 それ以外の場合は、null
を返します。
安全でないキャスト演算子 as
を使用する
安全でないキャスト演算子 as
は、ターゲットの型に変換できるオペランドを渡すまで正常に機能します。
コード例:
fun main(args: Array<String>){
val s: String = "Convertible"
val s1: String = s as String
println(s1)
}
Convertible
しかし、ターゲットの型と互換性のないものを変換しようとすると、エラーがスローされます。
コード例:
fun main(args: Array<String>){
val s: String = 18
val s1: String = s as String
println(s1)
}
エラー出力:
安全なキャスト演算子 as?
エラーを回避するのが最善です。
安全なキャスト演算子 As?
を使用する
前述のように、型キャストが不可能な場合、安全なキャスト演算子は null
を返します。
fun main(args: Array<String>){
var s: Any = "Kotlin"
var s1 = 18
// Returns null when casting is not possible
val s2: String? = s1 as? String
println(s2)
}
出力:
null
Kailash Vaviya is a freelance writer who started writing in 2019 and has never stopped since then as he fell in love with it. He has a soft corner for technology and likes to read, learn, and write about it. His content is focused on providing information to help build a brand presence and gain engagement.
LinkedIn