You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中继承泛型父类时的点(.)含义及<A.C>形式解析

拆解Java继承里的内部类与泛型组合写法

嘿,这个问题我刚接触Java泛型和内部类的时候也卡过,咱们一步步拆解来看,其实本质都是内部类的引用逻辑~

一、搞懂RecyclerView.Adapter<GreenAdapter.NumberViewHolder>里的点

这里的.其实是用来引用静态内部类的,拆解成两部分看更清楚:

  1. RecyclerView.Adapter:RecyclerView是一个顶层类,Adapter是它的静态内部类——静态内部类不需要依赖外部类的实例就能独立使用,所以可以直接用外部类.内部类的形式访问。
  2. <GreenAdapter.NumberViewHolder>:这里的GreenAdapter.NumberViewHolder是GreenAdapter类自己定义的内部类(在RecyclerView的场景里,这个一般是用来复用列表项的ViewHolder类),它被作为泛型参数传给了父类RecyclerView.Adapter。

举个简化的等价例子,方便你理解:

// 模拟RecyclerView和它的Adapter内部类
public class RecyclerView {
    // 静态内部类Adapter,是个泛型类
    public static class Adapter<VH> {
        // 泛型相关的方法,比如创建ViewHolder
        public VH onCreateViewHolder() {
            return null;
        }
    }
}

// 模拟你的GreenAdapter
public class GreenAdapter extends RecyclerView.Adapter<GreenAdapter.NumberViewHolder> {
    // GreenAdapter的内部类NumberViewHolder
    public static class NumberViewHolder {
        // 比如持有列表项的TextView等控件
    }
}

整段代码的意思就是:GreenAdapter继承自RecyclerView里的静态内部类Adapter,并且指定这个Adapter的泛型类型为自己的内部类NumberViewHolder。

二、理解class A extends B<A.C>里的<A.C>

这里的<A.C>是给泛型父类B指定类型参数,这个参数就是A类里的内部类C。

  • 如果这段代码是写在A类的定义里,其实可以简化成<C>,但写全<A.C>会更明确,尤其是在其他类里引用的时候。
  • 这么做的目的是让父类B的泛型方法/属性,在子类A里直接适配成C类型,避免强制类型转换。

同样举个直观的例子:

// 泛型父类B
public class B<T> {
    // 返回泛型类型T的方法
    public T getInstance() {
        return null;
    }
}

// 子类A继承B,并指定泛型参数为自己的内部类C
public class A extends B<A.C> {
    // A的内部类C
    public static class C {
        public void doSomething() {
            System.out.println("我是C类的方法");
        }
    }

    public void test() {
        // 这里getInstance()直接返回A.C类型,不用强转
        C c = getInstance();
        c.doSomething();
    }
}

当A继承B<A.C>后,父类B里的getInstance()方法在A中就会返回A.C类型的对象,代码更简洁安全。

核心总结

这两种写法里的.本质都是引用内部类:

  • 第一种是用外部类.内部类的形式,把外部类的静态内部类作为父类来继承;
  • 第二种是把当前类的内部类作为泛型参数,传给泛型父类。

内容的提问来源于stack exchange,提问作者gopala krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:40:25