AClass.class.getName();
如果AClass是java类,则此方法将返回包名和类名。 但是当我将AClass java文件转换为Kotlin文件时,它只会返回一个类名。所以系统找不到这个类路径
上面的代码
答案 0 :(得分:19)
有很多方法可以在kotlin中获取java Class
的完全限定名称:
通过财产KClass.qualifiedName
获取姓名:
val name = AClass::class.qualifiedName;
或通过媒体资源Class.name
获取姓名:
val name = AClass::class.java.name;
OR 通过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 |
|-----------------------|-----------------------|-----------------------|
答案 1 :(得分:4)
尝试以下解决方案:: -
var name = MainActivity::class.java.canonicalName as String
答案 2 :(得分:2)
如果是java片段
var fragmentSimpleName = FragmentName :: class.java.simpleName as String
答案 3 :(得分:1)
这就是我用来获取类名的方法。
val TAG = javaClass.simpleName
对于Android开发人员来说,将其声明为字段并调用以打印日志非常有用。
答案 4 :(得分:0)
也许我参加聚会有点晚了,但是我使用片段的新实例的哈希码来做到这一点。它是一个Int,因此可以进行各种测试。
private val areaFragment by lazy { Area_Fragment.newInstance() }
var fragmentHashCode = fragment.hashCode()
when (fragmentHashCode) {
areaFragment.hashCode() -> {
myNavigationView.setCheckedItem(R.id.nav_area)
}