Kotlinクラスには、クラスタイプTのオブジェクトとしてメソッドパラメーターがあります(kotlin doc here を参照)。オブジェクトとして、メソッドを呼び出すときに異なるクラスを渡します。 Javaでは、オブジェクトのinstanceof
を使用してクラスを比較できます。
だから私はそれがどのクラスであるかを実行時にチェックして比較したいですか?
Kotlinでinstanceofクラスを確認するにはどうすればよいですか?
is
を使用します。
if (myInstance is String) { ... }
またはその逆!is
if (myInstance !is String) { ... }
is
演算子またはその否定形式!is
を使用して、実行時にオブジェクトが特定の型に準拠しているかどうかを確認できます。
例:
if (obj is String) {
print(obj.length)
}
if (obj !is String) {
print("Not a String")
}
カスタムオブジェクトの場合の別の例:
タイプobj
のCustomObject
があります。
if (obj is CustomObject) {
print("obj is of type CustomObject")
}
if (obj !is CustomObject) {
print("obj is not of type CustomObject")
}
when
とis
の組み合わせ:
when (x) {
is Int -> print(x + 1)
is String -> print(x.length + 1)
is IntArray -> print(x.sum())
}
公式ドキュメント からコピー
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 */ }
}
is
というキーワードを使用してみてください 公式ページ参照
if (obj is String) {
// obj is a String
}
if (obj !is String) {
// // obj is not a String
}
その他の解決策:KOTLIN
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
if (fragment?.tag == "MyFragment")
{}
このように確認できます
private var mActivity : Activity? = null
それから
override fun onAttach(context: Context?) {
super.onAttach(context)
if (context is MainActivity){
mActivity = context
}
}