Многократная ошибка конструктора Kotlin: объявление имеет одинаковую подпись Java - PullRequest
0 голосов
/ 19 октября 2019

У меня есть два конструктора в классе FirebaseUserAuth, и он выдает ошибку: объявление имеет одинаковую подпись Java. Параметр конструкторов разные. Почему он дает ту же ошибку подписи? как это исправить?.

class FirebaseUserAuth(private val auth: FirebaseAuth,
                       private val loginCallBack: ((LoginAuthData) -> Unit)?,
                       private val registerVM_CallBack: ((RegisterAuthData) -> Unit)?)
{

  constructor(auth: FirebaseAuth, loginCallBack: (LoginAuthData) -> Unit): this(auth, loginCallBack, null)
  constructor(auth: FirebaseAuth, registerCallBack: (RegisterAuthData) -> Unit): this(auth, null, registerCallBack)
}

Ошибка

> Platform declaration clash:The following declarations have the same JVM
> signature (Lcom/google/fireBase/auth/FirebaseAuth;Lkotlin/jvm/
> functions/Function1;)V):
> 
>  • public constructor FirebaseUserAuth(auth: FirebaseAuth,
> loginCallBack: (LoginAuthData) -> Unit) defined.
> com.examgle.data.FirebaseUserAuth 
> 
>  • public constructor FirebaseUserAuth(auth: FirebaseAuth,
> registerCallBack: (RegisterAuthData) -> Unit) defined.
> com.examgle.data.FirebaseUserAuth

1 Ответ

2 голосов
/ 19 октября 2019
constructor(auth: FirebaseAuth, loginCallBack: (LoginAuthData) -> Unit)
constructor(auth: FirebaseAuth, registerCallBack: (RegisterAuthData) -> Unit)

Оба конструктора совпадают с типом параметра функции в JAVA: Lkotlin/jvm/functions/Function1.

Проверьте это с помощью:

  1. Menu > Tools > Kotlin > Show Kotlin Bytecode
  2. Нажмите на кнопку Decompile
  3. Проверьте код Java

Я предлагаю использовать параметр default вместочем вторичный конструктор, если это возможно:

class FirebaseUserAuth(private val auth: FirebaseAuth,
                       private val loginCallBack: ((LoginAuthData) -> Unit)? = null,
                       private val registerVM_CallBack: ((RegisterAuthData) -> Unit)? = null)
{
    ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...