web-dev-qa-db-ja.com

kotlinの「instanceof」クラスを確認する方法は?

Kotlinクラスには、クラスタイプTのオブジェクトとしてメソッドパラメーターがあります(kotlin doc here を参照)。オブジェクトとして、メソッドを呼び出すときに異なるクラスを渡します。 Javaでは、オブジェクトのinstanceofを使用してクラスを比較できます。

だから私はそれがどのクラスであるかを実行時にチェックして比較したいですか?

Kotlinでinstanceofクラスを確認するにはどうすればよいですか?

56
pRaNaY

isを使用します。

if (myInstance is String) { ... }

またはその逆!is

if (myInstance !is String) { ... }
114
nhaarman

is演算子またはその否定形式!isを使用して、実行時にオブジェクトが特定の型に準拠しているかどうかを確認できます。

例:

if (obj is String) {
    print(obj.length)
}

if (obj !is String) {
    print("Not a String")
}

カスタムオブジェクトの場合の別の例:

タイプobjCustomObjectがあります。

if (obj is CustomObject) {
    print("obj is of type CustomObject")
}

if (obj !is CustomObject) {
    print("obj is not of type CustomObject")
}
11
Avijit Karmakar

whenisの組み合わせ:

when (x) {
    is Int -> print(x + 1)
    is String -> print(x.length + 1)
    is IntArray -> print(x.sum())
}

公式ドキュメント からコピー

8
methodsignature

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 */ }
}
6
ice1000

isというキーワードを使用してみてください 公式ページ参照

if (obj is String) {
    // obj is a String
}
if (obj !is String) {
    // // obj is not a String
}
2
Terril Thomas

その他の解決策:KOTLIN

val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)

if (fragment?.tag == "MyFragment")
{}
0
Álvaro Agüero

このように確認できます

 private var mActivity : Activity? = null

それから

 override fun onAttach(context: Context?) {
    super.onAttach(context)

    if (context is MainActivity){
        mActivity = context
    }

}
0
bala