说实话,关于《JAVA编程思想》中“初始化与清理”章节,我细致看完后,感觉若无所获,让我大失所望,姑且记录在本博客中,是因为希望未来一天再读关于“初始化”、“清理”的时候能够大彻大悟。

一、以返回值区分重载方法

我曾经就干过这样的傻事,项目中我们经常会编写自己的DateUtils包,来转换各种日期格式。

int getFromDate(Date date){
}
long getFromDate(Date date){
}

例如上面这串代码,本意是想通过一个方法名getFromDate来获得日期的long时间戳(13位)或者int时间戳(10位),我原来总觉得这样的写法,编译器应该认为是合乎情理的,但编译器是不通过的。
需要改成这样的写法:

int getIntFromDate(Date date){
}
long getLongFromDate(Date date){
}

有时你并不关心方法的返回值,你想要的是方法调用的其他效果。

所以这种情况下,针对getFromDate方法,编译器就不知道你要调用哪一个?
Java 初始化与清理_java学习

所以,返回值区分重载方法是不可行的。

二、this和static

本来这个小节,我是很感兴趣的,对于这两个关键字,王二一直没有“深入浅出”,以后还需再总结。

三、垃圾回收

Bruce花费了大量的文字来介绍java的垃圾回收机制,无论是“标记-清扫”,还是“停止-复制”,我都没有看明白,没有大彻大悟,实在抱歉,只恨自己脑瓜郁闷。

四、初始化

记得看尚学堂马士兵的视频,或者魔乐科技的李兴华老师视频时,都会花一定的时间介绍java类在初始化时的顺序,今天再次重温了一遍,但依然没啥感觉,不做深究。

①、可变参数列表

可变参数列表其实是很有用的,尤其是在做sql语句的变量赋值时。

public void fillStatement(PreparedStatement pst, Object... paras) throws SQLException {
    for (int i=0; i<paras.length; i++) {
        pst.setObject(i + 1, paras[i]);
    }
}

拼预处理sql语句时,我们基本上都会使用“?”来代替参数,然后将参数放在可变参数paras中,这是非常好用的做法。

②、枚举类型

王二觉得,枚举并没有发挥其原本想要的作用,至少现在看来,枚举在使用过程中还是略显疲态,不过有一个很重要的地方用枚举就特别给力,那就是单例。

public enum Single {
INSTANCE;
}
  1. 非常简洁
  2. 无偿提供序列号机制
  3. 绝对防止多次实例化

这三点在《effective java》中已强烈推荐,实现singleston的最佳方式!关于singleston,还有很多其他的版本,你可以参阅深入浅出单实例Singleton设计模式,非常详细。

本篇我并没有学到太多的至少,水平有限,只能一点一点来,如果你是大神级别的,请自动过滤!


相关文章

王二语录

it will all get better in time, And even though i really love you,i am gonna smile cause i deserve to(一切都会好起来,即便我真的真的爱你,我也要微笑面对,因为我原本如此)──Leona Lewis《Better In Time》
本文出自:【qing_gee的博客