think in java , effective java 这两本书一直都在java的生态圈中经久不衰。本来想着先翻过 think in java 这本大山,但是读到一半就放弃了。过长的篇幅,让人难以忍受,再大的兴趣,也被过多繁琐的文字所磨灭了,但是不可否认里面涵盖了许许多多经典的java知识,可能要等我再成熟一点,多一点耐心,再回来翻这本书吧。
在两三年前我买了 这本 effective java 来自google首席架构师 joshua bloch 的经典之作,当时我接触java时间不是很长,自以为会写几个 hello world,就想向着原始森林进行探险,结果可想而知,有去无回。
拿到书的那一天,我兴奋地回到宿舍,翻开书读了读引言,大多跟平常的书没啥区别,吹一吹作者的平生,找几个业界的大牛再吹一下这本著作,最后做一下总结,谁谁谁可以读这本书,差不多就是这样了。读完引言,我发觉这本书可以说我已经读完了。别误会,这不是我在吹牛,而是我再也看不懂其余的部分了,说实话,还是有点失落的,我TM连第一章都似懂非懂的,我还能看什么。第一段与这本书的缘分基本就这样告一段落。
接下来的两年时间里,参与了一些实际的项目,学习了诸如设计模式,jvm,阅读了部分jdk的源码实现,更深层次理解了集合,框架原理。我再回过头来去看这本我两年前望尘莫及的经典之作。俗话说的好,哪里跌倒,哪里爬起来是不是。全书78条原则,大致包含了并发,设计模式,多态,类库,异常,序列化等相关知识,从安全,高效,性能,扩展,可读性,这几个方面讲述了
How to use Java efficiently ?
这本书有许许多多,你实际生产碰到过,或者即将碰到,又或者未来会碰到的一些设计思路,能帮你塑造编程思想。看不懂这本书之前,这本书是你努力的目标,看懂看完这本书之后,这本书塑造了你编程思想。看完之后,可能这本书的价值真正体现出来,你不可能在实际开发中碰到过所有的问题,这本书可以成为你未来开发中的指南针。帮你从繁杂的编码设计中,选出最优的方案。
我在这几天已经把书翻了一遍了,但是还有许多不理解的地方,有些可能是积累不够,有些由于翻译的原因,已经难以阅读。英语不错的同学,可以读原著,相对吃力一点,收获自然也是成正比的。让我印象最深的是泛型那部分的知识,由于篇幅原因,我就提一点。
Map<String,Map<String,Object>> map = new HashMap<String,Map<String,Object>>();
感觉挺常见的代码,但是看上去不咋地,后面的一段泛型声明感觉有点冗余亢长,熟悉guava的同学们可能知道我要说什么。
public class TypeInference { public static <K,V> HashMap<K,V> newInstance(){ return new HashMap<K,V>(); } public static void main(String[] args) { Map<String,Map<String,Object>> map = TypeInference.newInstance(); } }
你可能可以利用 类型推导 让它看着顺眼一点,但是很可惜,jdk集合工具类上并没有上述的静态方法,只能由自己去写一个了。
该书中还有许多看似不起眼,但是写起来很顺眼的东西。除此之外还有一些比较深层次的探索,对javaer帮助还是挺大的,欢迎看过该书的同学一起学习交流。