web-dev-qa-db-fra.com

Kotlin kotlinClass.class.getName () ne peut pas renvoyer le nom du package mais uniquement le nom de la classe simple

AClass.class.getName ();

si AClass est une classe Java, cette méthode renverra le nom du package et le nom de la classe . mais lorsque je convertis un fichier Java AClass en fichier Kotlin, elle ne renverra qu'un nom de classe. si le système ne peut pas trouver ce chemin de classe

le code ci-dessus 

7
叶钦富

il existe de nombreuses façons d'obtenir le nom qualifié complet d'une variable Java Class dans kotlin:

obtenir le nom via la propriété KClass.qualifiedName:

val name = AClass::class.qualifiedName;

OUobtenir le nom via la propriété Class.name:

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

OUget nom via la méthode Class#getName:

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

la table du nom qualifié d'une classe comme ci-dessous:

|-----------------------|-----------------------|-----------------------|
|                       |          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   |
|-----------------------|-----------------------|-----------------------|
14
holi-java

Essayez la solution ci-dessous :: -

var name = MainActivity::class.Java.canonicalName as String
3
Nitin Patel

S'il s'agit d'un fragment Java

var fragmentSimpleName = NomFragment :: class.Java.simpleName en tant que chaîne

2
LinuxFelipe-COL

Je suis peut-être un peu en retard pour la fête, mais je le fais en utilisant le code de hachage de la nouvelle instance du fragment. C'est un Int permet donc toutes sortes de tests.

 private val areaFragment by lazy { Area_Fragment.newInstance() }

    var fragmentHashCode = fragment.hashCode()
            when (fragmentHashCode) {
                areaFragment.hashCode() -> {
                    myNavigationView.setCheckedItem(R.id.nav_area)
            }