在kotlin类中,我将方法参数作为类类型T的对象(请参见此处的kotlin doc )。作为对象,我在调用方法时传递不同的类。在Java中,我们可以使用对象来比较类。instanceof
所以我想在运行时检查并比较它是哪个类?
如何instanceof在Kotlin中上课?
Answers:
我们可以使用is运算符或其取反形式检查对象在运行时是否符合给定类型!is。
例:
if (obj is String) {
print(obj.length)
}
if (obj !is String) {
print("Not a String")
}
自定义对象的另一个示例:
让我有一个objtype CustomObject。
if (obj is CustomObject) {
print("obj is of type CustomObject")
}
if (obj !is CustomObject) {
print("obj is not of type CustomObject")
}
if,obj将自动转换为String。因此,您可以length直接使用诸如之类的属性,而无需显式obj转换String为块内部。
您可以在这里https://kotlinlang.org/docs/reference/typecasts.html阅读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
}
然后在主要功能中,我尝试打印并显示在终端上:
fun main() {
val stringResult = getResult("Kotlin")
val intResult = getResult(100)
// TODO 2
println(stringResult)
println(intResult)
}
这是输出
6
500
其他解决方案:KOTLIN
val fragment = supportFragmentManager.findFragmentById(R.id.fragment_container)
if (fragment?.tag == "MyFragment")
{}