[英]Extend a java class with <T extends SomeClass> generic type in kotlin
[英]meaning of someclass <VH extends ???>
我知道JAVA的通用概念=类型和Android的Recycler View概念。
我已经知道了->扩展了RecyclerView.Adapter。 在Android开发者网站上看到过。
但是,这仍然很难理解。
我正在查看Firebase的Cloud Firestore代码。
还有一些代码
extends FirestoreAdapter<SomeClassAdapter.ViewHolder>
和
public abstract class FirestoreAdapter<VH extends RecyclerView.ViewHolder>
extends RecyclerView.Adapter<VH>
这些概念对我来说太难了...一些泛型和一些扩展。
我做了很多搜索,也做了很多思考。 请您简单解释一下? 或某些要引用的网站。
谢谢阅读! 任何种类的小费都无所谓。 我会感激的!
如果我用一个例子解释一下,也许会更容易理解:
假设我们有一个名为SomeClassAdapter
的适配器类,它具有一个名为ItemViewHolder
的内部类,如下所示:
public class SomeClassAdapter extends FirestoreAdapter {
...
private class ItemViewHolder extends FirestoreAdapter.ViewHolder {
...
}
}
如果我们想使用内部类( ItemViewHolder
)作为我们的视图持有人来扩展SomeClassAdapter
,我们将使用:
public class Example extends FirestoreAdapter<SomeClassAdapter.ItemViewHolder>
但是您提到的第二个概念是我们在示例中扩展的超类(它是抽象的,我们必须对其进行扩展并覆盖其抽象方法才能创建实例)
现在假设我们有一个类,该类需要一个类型才能在类声明中使用它。 在那种情况下,我们声明一个类似于FirestoreAdapter
的类,并在<..>
内部传递通用类型,例如: FirestoreAdapter<VH>
。 如果我们需要VH
是另一个类(例如RecyclerView.ViewHolder
的子类型,则将其声明为: FirestoreAdapter<VH extends RecyclerView.ViewHolder>
。
如果我们需要FirestoreAdapter
本身成为另一个类(例如RecyclerView.Adapter
的子类型,该怎么办? 因此,它将是FirestoreAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter
。 在我们的示例中, RecyclerView.Adapter
类需要一个通用类型来扩展RecyclerView.ViewHolder
本身,并且我们想在此处使用与FirestoreAdapter<VH>
相同的类型,因此我们只需将VH
作为我们的RecyclerView.Adapter
通用类型即可。 得出一个结论,我们将得到:
FirestoreAdapter<VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.