如何覆盖kotlin的setter方法?

class loginViewModel(): BaseObservable() { var errorEmail:String?=null var errorPassword:String?=null var userEmailAddress:ObservableField = ObservableField() var userPassword:ObservableField = ObservableField() fun setUserEmailAddress(email:ObservableField){ this.userEmailAddress=email /* To get value of edittext enterd by user, This Updates the value of userEmail on Every LEtter Entered by User*/ notifyPropertyChanged(R.id.email_address) notifyPropertyChanged(BR.errorEmail) } } 

但是得到错误

 Platform declaration clash: The following declarations have the same JVM signature (setUserEmailAddress(Landroid/databinding/ObservableField;)V): • public final fun setUserEmailAddress(email:ObservableField): Unit • public final fun (:ObservableField): Unit 

我试过这个解决方案 。

kotlin version = 1.1.2-4我试图重写也是我认为我们不能的乐趣。

您可以为您的字段声明一个自定义设置器 ,而不是创建一个新的setUserEmailAddress()方法。 你可以看到下面的代码。

你得到这个错误的原因是因为在你创建一个var时,会自动为你创建一个setter。 您正在创建的setUserEmailAddress函数与其名称相匹配导致命名空间冲突。

 class loginViewModel(): BaseObservable() { var errorEmail:String?=null var errorPassword:String?=null var userPassword:ObservableField = ObservableField() var userEmailAddress:ObservableField = ObservableField() set(email){ // the type of email is inferred field=email // we can access the backing field in our custom setter /* To get value of edittext enterd by user, This Updates the value of userEmail on Every LEtter Entered by User*/ notifyPropertyChanged(R.id.email_address) notifyPropertyChanged(BR.errorEmail) } }