Kotlin kotlinClass.class.getName() 不能返回包名,只能返回简单的类名

2022-09-01 10:16:46

AClass.class.getName();

如果 AClass 是 java 类,则此方法将返回包名和类名。但是当我将AClass java文件转换为Kotlin文件时,它只会返回一个类名。所以系统找不到这个类路径

上面的代码


答案 1

有很多方法可以在 kotlin 中获取 java 的完整限定名:Class

通过属性获取名称:KClass.qualifiedName

val name = AClass::class.qualifiedName;

通过属性获取名称:Class.name

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

通过以下方法获取名称:Class#getName

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

类的限定名称表,如下所示:

|-----------------------|-----------------------|-----------------------|
|                       |          Class        |     Anonymous Class   |
|-----------------------|-----------------------|-----------------------|
| KClass.qualifiedName  |    foo.bar.AClass     |         null          |
|-----------------------|-----------------------|-----------------------|
| Class.name            |    foo.bar.AClass     |    foo.bar.AClass$1   |
|-----------------------|-----------------------|-----------------------|
| Class.getName()       |    foo.bar.AClass     |    foo.bar.AClass$1   |
|-----------------------|-----------------------|-----------------------|

答案 2

请尝试以下解决方案::-

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

推荐