import kotlin.reflect.KClass
val <T : Any > T.kClassName: KClass<out T>
get() {
return javaClass.kotlin
}
在这里我们可以得到Kotlin中的类名
val <T : Any > T.classNameKotlin: String?
get() {
return javaClass.kotlin.simpleName
}
在这里我们可以得到Kotlin中的类名
val <T : Any > T.classNameJava: String
get() {
return javaClass.simpleName
}
以下是以下操作的输出。
fun main(){
val userAge = 0
println(userAge.kClassName)
Output: class java.lang.Integer (Kotlin reflection is not available)
println(userAge.classNameKotlin)
Output: Int
println(userAge.classNameJava)
Output: Integer
}
自Kotlin1.5.21(计算机大脑组织:kotlin标准库:1.5.21) val TAG = javaClass.simpleName will work no more! 错误“信息不足,无法推断类型变量T”
/**
* Returns the runtime Java class of this object.
*/
public inline val <T : Any> T.javaClass: Class<T>
@Suppress("UsePropertyAccessSyntax")
get() = (this as java.lang.Object).getClass() as Class<T>
@Deprecated("Use 'java' property to get Java class corresponding to this Kotlin class or cast this instance to Any if you really want to get the runtime Java class of this implementation of KClass.", ReplaceWith("(this as Any).javaClass"), level = DeprecationLevel.ERROR)
public inline val <T : Any> KClass<T>.javaClass: Class<KClass<T>>
@JvmName("getRuntimeClassOfKClassInstance")
@Suppress("UsePropertyAccessSyntax")
get() = (this as java.lang.Object).getClass() as Class<KClass<T>>
7条答案
按热度按时间mnemlml81#
自Kotlin1.1以来,实现这一点的最简单方法是类引用语法:
如果您使用Kotlin1.0,您可以通过调用
.kotlin
扩展属性将获得的Java类转换为KClass示例:1mrurvl12#
由于该语言还不支持直接获取此内容的方法,因此consider defining an extension method for now。
或者,如果你喜欢一个属性:
h4cxqtbf3#
这是我的解决方案
使用javaClass.simpleName你可以获得你的类名。同样上面的例子对于android开发者在类的顶部声明一个示例变量以用于日志记录是非常有用的。
luaexgnf4#
这里有不同的实现来获取类名。您可以根据自己的需要使用它。
在这里我们可以得到Kotlin中的类名
在这里我们可以得到Kotlin中的类名
以下是以下操作的输出。
umuewwlo5#
自Kotlin1.5.21(计算机大脑组织:kotlin标准库:1.5.21)
val TAG = javaClass.simpleName will work no more!
错误“信息不足,无法推断类型变量T”
您现在可以尝试
YourClassName::class.java.simpleName
n3h0vuf26#
在Kotlin:
v64noz0r7#
我认为这是更好的解决方案。在这里找到https://www.techiedelight.com/determine-class-name-in-kotlin/
娱乐主频道(){
}