在Kotlin中的getClass()之后获取simpleName()

por*_*der 3 java string android kotlin

在Java中,我可以使用getClass(),然后从该类对象检索simpleName,而不会出现任何问题。

String tag = someObject.getClass().getSimpleName(); // java code
Run Code Online (Sandbox Code Playgroud)

但是当转换为Kotlin时,这会引起警告

调用使用在编译类路径中找不到的反射API。确保您在类路径中有kotlin-reflect.jar

Kotlin代码是

someObject::class.simpleName!! // kotlin code
Run Code Online (Sandbox Code Playgroud)

避免的正确方法是什么

kotlin.jvm.KotlinReflectionNotSupportedError吗?需要对kotlin-reflect.jar的附加依赖。也许最好使用:: class.java.simpleName

Com*_*are 7

使用someObject::class.java.simpleName


Edg*_*ich 5

在 Kotlin 中有几种方法可以做到这一点您可以通过属性接收名称 - KClass.qualifiedName

val name = AClass::class.qualifiedName;
Run Code Online (Sandbox Code Playgroud)

或通过Class.getName

val name = AClass::class.java.getName();
Run Code Online (Sandbox Code Playgroud)

或者你可以试试Class.name

val name = AClass::class.java.name;
Run Code Online (Sandbox Code Playgroud)

Class.canonicalName

var name = AClass::class.java.canonicalName as String
Run Code Online (Sandbox Code Playgroud)

  • @CommonsWare 解决方案是正确的。感谢您的回应埃德加。我相信您已经解决了其他正在学习 Kotlin 并跟随并阅读此主题的人的一些其他问题。 (2认同)

Kas*_*aar 5

很多答案要求您输入班级名称,我为您提供了最短的解决方案。

javaClass.simpleName
Run Code Online (Sandbox Code Playgroud)

您可以在任何地方使用上面的行来获取类名,它将返回您当前的类名。