假设我有一个类A,它之前看起来像这样:
class A(str:String){
// body
}
现在,我想从构造函数中移除参数,而不是使用setter来设置该值,如下所示:
class A(){
lateinit var str:String
fun setStr(paramsString:String){
str = paramsString
}
}
因为我使用setter赋值,所以在创建该类的对象时,它不会给予我一个编译时异常。
所以,我尝试了下面这样的东西:
class A(){
lateinit var str:String
init{
setStr(strValue:String)
}
fun setStr(paramsString:String){
str = paramsString
}
}
这个init块将在创建类A的对象之后执行,类A的对象将被调用setter方法,但我仍然希望在创建下面的类的对象以调用setter方法时发出警告或抛出异常。
1条答案
按热度按时间c2e8gylq1#
这个
我已经有一个二传手,因为你可以做
编译时错误可能需要一些类型检查(例如,
String?
允许null,String
检查非null)如果要在
a.str="Blub"
上执行代码,请执行以下操作:您也可以对get()BTW执行类似的操作。
另一种设置方法是使用
var a: String by Delegate.vetoable....
和其他Delegate
方法-让您可以高度控制设置新值时发生的情况。输出: