Saltar al contenido

No puedo comunicarme con ningún miembro de la clase de una clase anidada en Kotlin

Solución:

En Kotlin, las clases anidadas no pueden acceder a la instancia de clase externa de forma predeterminada, al igual que anidadas static classes no puede en Java.

Para hacer eso, agregue el inner modificador a la clase anidada:

class MainFragment : Fragment() {
    // ...

    inner class PersonAdapter() : RecyclerView.Adapter<ViewHolder>() {
        // ...
    }
}

Tenga en cuenta que un inner La clase contiene una referencia a su instancia de clase contenedora, lo que puede afectar la vida útil de esta última y potencialmente conducir a una pérdida de memoria si el inner La instancia de clase se almacena globalmente.

Ver: Clases anidadas en el idioma de referencia

En Kotlin, hay 2 tipos de clases anidadas.

  1. Clase anidada
  2. clase interna

Las clases anidadas no pueden acceder al miembro de la clase externa.

Si desea acceder al miembro de la clase externa en la clase anidada, debe definir esa clase anidada como clase interna.

class OuterClass{

    var name="john"

    inner class InnerClass{

       //....
    }

}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *