在子类中定义后如何通过super发送参数?
How to Send Argument Through Super After Being Defined In Subclass?
我想通过 super 将属性发送到视图中。 (如第一行所示)但是IDE不想拿;我的代码中遗漏了一些东西。
class BoxDrawingView(context: Context): View(context, attrs) {
var attrs: AttributeSet? = null
constructor(context: Context, attrs: AttributeSet): this(context) {
this.attrs = attrs
}
}
谁能帮我解决这个问题?谢谢!
试试这个:
class BoxDrawingView : View {
var attrs: AttributeSet? = null
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
this.attrs = attrs
}
}
问题是您没有一个适用于所有情况的构造函数。发生这种情况时,您可以避免使用普通构造函数 shorthand(即声明属性与 class 声明内联),创建多个构造函数,并将每个委托给不同的 superclass 构造函数.
如果你想将 attrs
声明为 val
而不是 var:
,你也可以稍微修改一下
class BoxDrawingView : View {
val attrs: AttributeSet?
constructor(context: Context) : super(context) {
this.attrs = null
}
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
this.attrs = attrs
}
}
我想通过 super 将属性发送到视图中。 (如第一行所示)但是IDE不想拿;我的代码中遗漏了一些东西。
class BoxDrawingView(context: Context): View(context, attrs) {
var attrs: AttributeSet? = null
constructor(context: Context, attrs: AttributeSet): this(context) {
this.attrs = attrs
}
}
谁能帮我解决这个问题?谢谢!
试试这个:
class BoxDrawingView : View {
var attrs: AttributeSet? = null
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
this.attrs = attrs
}
}
问题是您没有一个适用于所有情况的构造函数。发生这种情况时,您可以避免使用普通构造函数 shorthand(即声明属性与 class 声明内联),创建多个构造函数,并将每个委托给不同的 superclass 构造函数.
如果你想将 attrs
声明为 val
而不是 var:
class BoxDrawingView : View {
val attrs: AttributeSet?
constructor(context: Context) : super(context) {
this.attrs = null
}
constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {
this.attrs = attrs
}
}