Vous pouvez facilement le faire :
::variableName.isInitialized
ou
this::variableName.isInitialized
Mais si vous êtes à l'intérieur d'un auditeur ou d'une classe interne, faites ceci :
this@OuterClassName::variableName.isInitialized
Note : Les déclarations ci-dessus fonctionnent bien si vous les écrivez dans le même fichier (même classe ou classe interne) que celui où la variable est déclarée, mais cela ne fonctionnera pas. si vous voulez vérifier la variable d'une autre classe (qui peut être une superclasse ou toute autre classe instanciée) par exemple :
class Test {
lateinit var str:String
}
Et de vérifier si str est initialisé :
Ce que nous faisons ici : vérification isInitialized
pour le champ str
de Test
dans la classe Test2
classe. Et nous obtenons une erreur en soutenant le champ de var n'est pas accessible à ce stade. Vérifier un question déjà soulevées à ce sujet.
3 votes
Ce qu'il vous faut peut-être, c'est rendre la propriété nullable (changer le type en
File?
) et vérifier si elle est nulle à la place ?1 votes
J'ai essayé et cela va fonctionner, mais je vais devoir modifier le fichier
allSeries
var toseriesDir?.listFiles()?.map { it.name }?.toTypedArray()
ce qui n'est pas très "joli"1 votes
Vous pouvez effectuer une simple vérification de la nullité et le smart cast rendra le tout plus joli.
if (seriesDir != null) {
allSeries = seriesDir.listFiles().map { it.name }.toTypedArray()
}
0 votes
Veuillez envisager d'accepter des informations plus récentes répondre