• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
    • Preguntas
    • Profesores
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Pruebas Online
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

507
Vistas
Kotlin: el captador público devuelve una lista inmutable, pero el captador privado debería devolver una lista mutable

Quiero que mi clase tenga un campo que devuelva una lista inmutable para todos los accesos públicos, pero dentro de la instancia del objeto quiero que la lista sea mutable para poder agregarle elementos.

 class GrammarParser { private val grammars: List<Grammar> = mutableListOf() get() = field.toList() }

Tratar

 class GrammarParser { private val _grammars: MutableList<Grammar> = mutableListOf() val grammars: List<Grammar> get() = this._grammars.toList() }

Intenté esto, pero no estoy seguro de si esto se considera una buena práctica.

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

En Kotlin, cada MutableList<T> también es una List<T> . Por lo tanto, puede crear una MutableList en un campo privado y declarar un campo adicional de tipo List que apunte al mismo objeto. Dentro de la clase, puede usar la referencia mutable para modificar la lista y exponer la List al exterior.

Ejemplo:

 class GrammarParser { private val mutableGrammars = mutableListOf<Grammar>() val grammars: List<Grammar> = mutableGrammars }

En su segundo ejemplo, crea una copia (instantánea) de la lista cada vez que llama al captador. Esto significa que, después de llamar al getter y obtener una lista, incluso si _grammars se modifica en otro lugar, los cambios no se reflejarán en la vista de lista de solo lectura de la que obtuvo la referencia. Esto podría ser algo que desea, entonces lo que está haciendo está bien. Pero si eso no es algo que está buscando, entonces el ejemplo que di arriba evitará la copia.

about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda