繁体   English   中英

某类的意思<VH extends ???>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM