1.我为什么要写这篇文章
最近开始读Java API文档,记录一下心路历程。
一开始是完全看不进去,也不知道从哪里开始看,怎么看。后来找到入口了,从 Java Collection Framework 看起。刚开始看的时候,很多单词不认识,还有一些专有名词不理解,比如:闭包,lambda表达式在不同的语言里的用法和表示方法等等。
最近看的时候既兴奋又焦虑,我猜想是因为第一次发现可以这样接受第一手资料兴奋,又第一次为自己懂的这么少而焦虑,所以就到了该写东西把自己这段时间的学习收获和体会记录下来,才可以抚平我的内心里的波澜。
2.我有哪些简单收获呢
Java的语法糖,如:泛型,枚举,lambda表达式等等
(1)泛型
从纯技术的角度上,我第一次主动去了解有哪些 Java 的语法糖。比如泛型,他最早设计就是用来保证类型安全,让集合框架里的元素在插入前可以检查类型是否符合要求,提高代码的健壮性。读懂泛型比较容易,写泛型程序或者设计泛型方法和类还是比较有难度的,需要相当的经验。
(2)lambda表达式
关于 lambda 表达式,我的理解还是很浅薄的,现在能领悟到他可以用来表示匿名类,并实现对应的方法。Java8 新增了函数式接口,里面只有一个未实现的抽象方法,就是函数接口的唯一函数方法。但是函数式接口里还可以定义并实现需要的默认(default)方法和静态方法,便于调用。
3.我为什么想读Java API文档和源码呢
回想起来,我最早想读api的原因有:
- 搞懂到底什么是泛型?
- 函数式编程到底是怎么一回事?
- Java Collection Framework 到底是怎么设计的呢?咱们平常一直在用各种实现类,比如HashMap,ArrayList,HashSet,LinkedList等等,内部到底是怎么实现的呢?
在阅读和思考这过程中,其实有很多意想不到的收获。比如,逐渐了解了这位实现Java API的大佬:Joshua Bloch 。
他领导开发了Java Collection Framework,Java.math 套件,编写了《Effective Java》一书。
目前读了一小半,真的是收获满满,里面提到了很多一直在用但是不知道为什么的知识,以及当初为什么这样设计,还有现有的 Java 源码里哪些不合理的地方,可能只有这样的大佬才可以批评 Java 源码吧。
4.我的体会和展望
直接看API文档和源码,目前并没有直接提升我的技术能力,也没有扩充我的技术栈,但能感觉都在提升我的的内在能力。
比如一些类库的设计思想,接口、抽象类、实现类的用法,以及要有良好的文档习惯。
比如 Java 语言自身做不了的限制,就需要人们自己去做约定,在文档注释里写清楚可以做什么,不可以做什么。甚至在定义接口的时候,连报什么异常,为什么报这个异常都说的很清楚。
真的是感触颇深,大佬们用浅显的语言告诉我们这样做,写了这么久的代码,去从来没有读过文档和源码,难怪自己会感觉这么恐慌,焦虑,却又很兴奋。
所以很感谢之前的引路人告诉我要养成看源码和官网的习惯,相当于直接接受大佬们的教导。虽然因为语言的不同不能做到很流畅的阅读和沟通,但我相信只要坚持下去,一定会有那么一天的:流畅的阅读各个技术框架的英文文档和在社区里跟各个大佬交流沟通。