在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")
}
自定义对象的另一个示例:
让我有一个obj
type 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")
{}