Comment vérifier si un “lateinit” variable a été initialisée?

Je me demande si il existe un moyen de vérifier si un lateinit variable a été initialisée. Par exemple:

class Foo() {

    private lateinit var myFile: File

    fun bar(path: String?) {
        path?.let { myFile = File(it) }
    }

    fun bar2() {
        myFile.whateverMethod()
        //May crash since I don't know whether myFile has been initialized
    }
}
  • Peut-être ce que vous avez besoin est de faire de la propriété nullable (changement de type de File?) et il suffit de vérifier si elle est null à la place?
  • Eh bien, j'ai effectivement essayé et il fera l'affaire, cependant, je vais avoir à modifier le allSeries var à seriesDir?.listFiles()?.map { it.name }?.toTypedArray(), ce qui n'est pas très "joli"
  • Vous pouvez faire un simple vieux null vérifier et smart cast va le rendre encore meilleur. if (seriesDir != null) { allSeries = seriesDir.listFiles().map { it.name }.toTypedArray() }
  • Veuillez envisager d'accepter plus à jour répondre
InformationsquelleAutor Mathew Hany | 2016-06-03