Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

768
Vistas
Los tipos solo pueden contener un constructor @Inject

Modelo de datos

 data class AuthDataModel @Inject constructor( var username: String = "", var password: String = "", var mobileData: String = "

Explicación

Estoy tratando de inyectar el modelo de datos de autenticación en el modelo de vista de autenticación en kotlin, pero no se compila con el mensaje ("Los tipos solo pueden contener un constructor @Inject)

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Moviendo mi comentario a una respuesta:

Si tiene un constructor con argumentos predeterminados, Kotlin en realidad genera constructores adicionales. En su caso, tiene un constructor de 3 argumentos donde todos son opcionales, lo que genera un total de 4 constructores. Aparentemente, Kotlin también asocia cualquier anotación en el constructor principal con todas las generadas, lo que significa que terminó con 4 constructores @Inject .

Tienes dos opciones:

El primero, como usted mismo mencionó, elimina todos los valores predeterminados. Si no hay valores predeterminados, solo se genera un constructor con la anotación.

Alternativamente, también puede crear constructores adicionales usted mismo y señalarlos al primario. Esto también le permitiría especificar manualmente solo uno para tener la anotación @Inject , mientras que los demás no. Básicamente:

 data class AuthDataModel @Inject constructor( var username: String, var password: String, var mobileData: String) { constructor(username: String) : this(username, "", "") {} constructor(username: String, password: String) : this(username, password, "") {} }

No usar los valores predeterminados evita que se generen múltiples constructores @Inject , y los constructores secundarios deben mantener todo funcionando como se espera. Básicamente, esto es sobrecargar el constructor, y es equivalente a lo que haría en Java cuando ciertas variables son opcionales. Por lo tanto, debería estar bien.

1: Hace tiempo que no uso Android y nunca usé @Inject. Si la opción 2 no funciona (como en @Inject no lo permite, o no funciona como se esperaba, etc.), eso solo deja la opción 1 y requiere que todos los parámetros se pasen explícitamente. Sin embargo, los constructores secundarios que llaman al constructor principal deberían ser suficientes para mantener todo funcionando.

over 4 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 Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda