Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

761
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda