Kotlin 使用公共方法初始化子类类型
我不明白为什么在子类定义中涉及公共方法Kotlin 使用公共方法初始化子类类型,kotlin,Kotlin,我不明白为什么在子类定义中涉及公共方法 class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) RecyclerView.ViewHolder的源代码 public abstract static class ViewHolder { public ViewHolder(View itemView) { if (itemView == null) { throw
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
RecyclerView.ViewHolder的源代码
public abstract static class ViewHolder {
public ViewHolder(View itemView) {
if (itemView == null) {
throw new IllegalArgumentException("itemView may not be null");
}
this.itemView = itemView;
}
您的问题是,为什么以下代码似乎在
RecylcerView
中调用公共方法ViewHolder
。这是您的代码,稍加重命名以使事情更清楚:
class MyClass(itemView: View) : RecyclerView.ViewHolder(itemView)
您的描述中缺少的是显示外部类:
类回收视图{//外部/包含类
静态类ViewHolder{//嵌套类
公共视图持有者(视图项视图){//构造函数
//…构造体
}
}
}
现在来看这个嵌套,要讨论ViewHolder
类,您需要将其引用为RecyclerView.ViewHolder
。然后,如果要构造该实例,则必须添加构造函数参数,例如在Java中:
new RecyclerView.ViewHolder(视图);
在Kotin中,当您从一个类派生时,您的构造函数必须调用超级构造函数,其简写方式是在声明中调用超级构造函数
class MyClass(ViewItem view) : RecyclerView.ViewHolder(view) {
// ...class body
}
这表示MyClass
从ViewHolder
派生而来,它是RecyclerView
的嵌套类,进入MyClass
构造函数的构造函数参数被传递到ViewHolder
的超级构造函数中
这与Java相同:
class MyClass扩展了RecyclerView.ViewHolder{
公共MyClass(ViewItem视图){
超级(视图);
}
}
您也可以直接导入嵌套的静态类,然后删除
RecyclerView
前缀,但保留它会更清楚一些。您的问题是为什么以下代码似乎在RecylcerView
中调用公共方法ViewHolder
。这是您的代码,稍加重命名以使事情更清楚:
class MyClass(itemView: View) : RecyclerView.ViewHolder(itemView)
您的描述中缺少的是显示外部类:
类回收视图{//外部/包含类
静态类ViewHolder{//嵌套类
公共视图持有者(视图项视图){//构造函数
//…构造体
}
}
}
现在来看这个嵌套,要讨论ViewHolder
类,您需要将其引用为RecyclerView.ViewHolder
。然后,如果要构造该实例,则必须添加构造函数参数,例如在Java中:
new RecyclerView.ViewHolder(视图);
在Kotin中,当您从一个类派生时,您的构造函数必须调用超级构造函数,其简写方式是在声明中调用超级构造函数
class MyClass(ViewItem view) : RecyclerView.ViewHolder(view) {
// ...class body
}
这表示MyClass
从ViewHolder
派生而来,它是RecyclerView
的嵌套类,进入MyClass
构造函数的构造函数参数被传递到ViewHolder
的超级构造函数中
这与Java相同:
class MyClass扩展了RecyclerView.ViewHolder{
公共MyClass(ViewItem视图){
超级(视图);
}
}
您也可以直接导入嵌套的静态类,然后删除RecyclerView
前缀,但保留它会更清楚一些