gpt4 book ai didi

java - kotlin:检查一个类是否是对象类?

转载 作者:行者123 更新时间:2023-11-29 07:24:50 25 4
gpt4 key购买 nike

我有一个 kotlin 对象和一个 java 类,例如:

KotlinObject.kt

object KotlinObject{
....
}

Java类.java

class JavaClass {
...
}

和一个用于检查的 kotlin 函数:

fun foo(cls: Class<*>): Any {
if (cls is kotlin's object) { //how to do this?
return ? //wanna return object's instance
} else {
return cls.newInstance()
}
}

我可以将 kotlin 对象或 java 类传递给此函数:

foo(KotlinObject::class.java)
foo(JavaClass::class.java)

那么是否可以分辨出哪个是kotlin的对象呢?

最佳答案

感谢@Alexey Romanov 在评论中指出 Kotlin 类信息可从 Class<*> 获得。 .

fun foo(cls: Class<*>) {
if (cls.kotlin.objectInstance != null)
println("KotlinObject")
else
println("Other class")
}

我最初的方法是模仿 Kotlins KClass.objectInstance .

我保留这个以供引用,但请使用上面的解决方案。

fun foo(cls: Class<*>) {
val objectInstance = cls.declaredFields.firstOrNull {
it.type == cls && it.name == "INSTANCE"
}

if (objectInstance != null)
println("KotlinObject")
else
println("Other class")
}

请注意,在这种情况下,任何在单例字段中使用名称“INSTANCE”的 Java 单例也将被报告为 Kotlin 对象。

关于java - kotlin:检查一个类是否是对象类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55390926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com