Di kelas Kotlin, saya memiliki parameter metode sebagai objek (Lihat Kotlin doc di sini ) untuk jenis kelas T . Sebagai objek saya melewati kelas yang berbeda ketika saya memanggil metode. Di Java kita bisa membandingkan class dengan instanceof
object class yang mana.
Jadi saya ingin memeriksa dan membandingkan pada saat runtime Kelas mana itu?
Bagaimana cara memeriksa instanceof
kelas di kotlin?
kotlin
kotlin-extension
pRaNaY
sumber
sumber
Kita dapat memeriksa apakah suatu objek sesuai dengan tipe yang diberikan saat runtime dengan menggunakan
is
operator atau bentuk negasinya!is
.Contoh:
if (obj is String) { print(obj.length) } if (obj !is String) { print("Not a String") }
Contoh Lain dalam kasus Objek Kustom:
Biarkan, saya memiliki
obj
tipeCustomObject
.if (obj is CustomObject) { print("obj is of type CustomObject") } if (obj !is CustomObject) { print("obj is not of type CustomObject") }
sumber
if
,obj
secara otomatis dilemparkan keString
. Jadi Anda bisa menggunakan properti sepertilength
secara langsung, tanpa perlu mentransmisikan secara eksplisitobj
keString
dalam blok.Anda dapat menggunakan
is
:class B val a: A = A() if (a is A) { /* do something */ } when (a) { someValue -> { /* do something */ } is B -> { /* do something */ } else -> { /* do something */ } }
sumber
Coba gunakan kata kunci yang disebut
is
Referensi halaman resmiif (obj is String) { // obj is a String } if (obj !is String) { // // obj is not a String }
sumber
Anda bisa memeriksanya seperti ini
private var mActivity : Activity? = null
kemudian
override fun onAttach(context: Context?) { super.onAttach(context) if (context is MainActivity){ mActivity = context } }
sumber
Anda dapat membaca Dokumentasi Kotlin di sini https://kotlinlang.org/docs/reference/typecasts.html . Kita dapat memeriksa apakah suatu objek sesuai dengan tipe yang diberikan saat runtime dengan menggunakan
is
operator atau bentuk negasinya!is
, misalnya menggunakanis
:fun <T> getResult(args: T): Int { if (args is String){ //check if argumen is String return args.toString().length }else if (args is Int){ //check if argumen is int return args.hashCode().times(5) } return 0 }
kemudian di fungsi utama saya mencoba untuk mencetak dan menampilkannya di terminal:
fun main() { val stringResult = getResult("Kotlin") val intResult = getResult(100) // TODO 2 println(stringResult) println(intResult) }
Ini adalah hasilnya
6 500
sumber
Solusi lain: KOTLIN
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container) if (fragment?.tag == "MyFragment") {}
sumber