Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kotlin “如何检查”;instanceof";在科特林上课?_Kotlin_Kotlin Extension - Fatal编程技术网

Kotlin “如何检查”;instanceof";在科特林上课?

Kotlin “如何检查”;instanceof";在科特林上课?,kotlin,kotlin-extension,Kotlin,Kotlin Extension,在kotlin类中,我将方法参数作为类类型T的对象(参见kotlin文档)。作为对象,我在调用方法时传递不同的类。 在Java中,我们可以使用对象的instanceof来比较该类是哪个类 所以我想在运行时检查并比较它是哪个类 如何在kotlin中检查类的实例?使用is if (myInstance is String) { ... } 或者相反的!是 if (myInstance !is String) { ... } 尝试使用名为is 我们可以在运行时使用is操作符或其否定形式检查对象是

在kotlin类中,我将方法参数作为类类型T的对象(参见kotlin文档)。作为对象,我在调用方法时传递不同的类。 在Java中,我们可以使用对象的
instanceof
来比较该类是哪个类

所以我想在运行时检查并比较它是哪个类

如何在kotlin中检查
类的
实例?

使用
is

if (myInstance is String) { ... }
或者相反的
!是

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

尝试使用名为
is


我们可以在运行时使用
is
操作符或其否定形式
检查对象是否符合给定类型!是

示例:

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

if (obj !is String) {
    print("Not a String")
}
自定义对象的另一个示例:

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")
}

您可以使用
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 */ }
}
when (x) {
    is Int -> print(x + 1)
    is String -> print(x.length + 1)
    is IntArray -> print(x.sum())
}

时组合

class B
val a: A = A()
if (a is A) { /* do something */ }
when (a) {
  someValue -> { /* do something */ }
  is B -> { /* do something */ }
  else -> { /* do something */ }
}
when (x) {
    is Int -> print(x + 1)
    is String -> print(x.length + 1)
    is IntArray -> print(x.sum())
}

复制自

您可以这样检查

 private var mActivity : Activity? = null
然后


其他解决方案:KOTLIN

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

if (fragment?.tag == "MyFragment")
{}

您可以在这里阅读Kotlin文档。我们可以在运行时使用
is
操作符或其否定形式
检查对象是否符合给定类型!is
,例如使用is
的示例:

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
}
这是输出

6
500

和官方医生一起回答是件好事。但更好的做法是在答案中添加示例代码,若链接已断开,则会有所帮助。谢谢你的回答。请注意另一件好事:在
if
的块中,
obj
自动转换为
字符串。因此,您可以直接使用
length
等属性,而无需在块内显式地将
obj
强制转换为
String
。此外,使用else语句也是一个很好的机会;)如果我想区分两个类,一个扩展另一个,例如LinearLayoutManager和GridLayoutManager,这是惯用的方法。