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

2022-09-02 19:31:35

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

String tag = someObject.getClass().getSimpleName(); // java code

但是,当转换为 Kotlin 时,这会导致警告

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

kotlin 代码是

someObject::class.simpleName!! // kotlin code

避免的正确方法是什么

kotlin.jvm.KotlinReflectionNotSupportedError ?需要额外的依赖性来反射 kotlin-reflect.jar。也许会更好地使用::class.java.simpleName


答案 1

用。someObject::class.java.simpleName


答案 2

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

val name = AClass::class.qualifiedName;

或通过 Class.getName

val name = AClass::class.java.getName();

或者你可以尝试使用 Class.name

val name = AClass::class.java.name;

Class.canonicalName

var name = AClass::class.java.canonicalName as String