这门课解决什么问题,适合什么基础
这季内容聚焦 Java 中三个常被初学者轻视、却在真实工程里频繁出现的特性:枚举、泛型、内部类。很多人写了几年代码,对泛型的边界、通配符、擦除机制仍然是一知半解,遇到框架源码里一堆尖括号就读不下去;对枚举的认知停留在“替代常量”,不清楚它还能携带构造器、抽象方法和接口实现;对内部类则只会用匿名内部类写事件监听,看不懂静态内部类为何能省内存、成员内部类为何持有外部引用。本课要补的就是这块基础到工程之间的断层,适合已经掌握 Java 面向对象基本语法、能独立写类和接口、但对上述三个主题停留在“用过但说不清”阶段的学习者。如果你连继承、多态、接口实现都还在磕磕绊绊,建议先把那些基础补扎实再来,否则泛型擦除和内部类引用链会让你越听越糊涂。
建议先看哪几块,资料怎么配合练习
不要按目录顺序从头刷,按“先补泛型、再啃枚举、最后收尾内部类”的顺序更合理。泛型是后两者的底层支撑,先看泛型简介、泛型类、泛型方法这三块,搞清楚类型参数声明在哪、作用域如何,再回头看泛型接口和泛型特性里的通配符、擦除问题,思路会顺很多。枚举部分两节连着看完,重点不是语法格式,而是理解枚举本质是继承自枚举基类的最终类、每个枚举常量都是实例对象,这一层想通了,枚举携带构造器和实现接口的写法就不需要死记。内部类先看简介和成员内部类,建立“内部类持有外部类引用”的模型,再看静态内部类为何打破这层引用,最后用匿名内部类收尾,把它和函数式接口、Lambda 的关系对照理解。练习上,每看完一节立刻在本地写三组代码:一组照抄课程示例跑通,一组故意改错看编译器报什么,一组把当前特性塞进自己写过的小项目里试试。尤其是泛型方法那节,务必手写一个接收泛型参数并返回指定类型的方法,光看不动手,过两天就忘。资料里的示例代码用来对照结果,别只当阅读材料,改参数、改类型声明,观察编译错误和运行行为差异,比反复看视频更管用。
学完能独立做什么
学完这一季,你应该能在不翻资料的情况下完成这些事:定义带泛型参数的容器类和方法,能正确使用上界通配符和下界通配符,并说清楚为什么往通配符集合里添加元素会被编译器拒绝;设计枚举类型时,知道何时给它挂构造器、何时用抽象方法让每个常量实现各自行为,而不是退化成一堆静态常量;读别人的框架源码,遇到内部类不至于卡住,能判断这个内部类是成员的还是静态的、为什么作者要这么选,并且自己写回调、事件处理时能合理选用匿名内部类或 Lambda。更重要的是,你应该能回答几个关键问题:泛型擦除发生在编译期还是运行期,擦除后类型参数变成什么,为什么运行时拿不到泛型实际类型;枚举单例在序列化和反射攻击下比普通单例安全在哪里;成员内部类和静态内部类在内存占用和外部引用上的本质区别是什么。这几个问题答得清楚,说明这季内容真正消化了,否则只是看过视频、没学进去。
课程目录
1 枚举简介 (17:11) 2 枚举用法 (14:53) 3 泛型简介 (03:09) 4 泛型类 (18:26) 5 泛型接口 (09:59) 6 泛型方法 (15:34) 7 泛型特性 (12:01) 8 内部类简介 (02:06) 9 成员内部类 (16:46) 10 局部内部类 (07:31) 11 静态内部类 (05:25) 12 匿名内部类 (14:13)





