阅读《effective java-第17条》遇到的问题解决与分享

问题背景

       最近这2天准备重新看一遍《effective java》,发现这些经典的书籍真的是看一遍又有一遍的感受。也越来越觉的学习的过程是一个重复的过程。这次遇到的问题是在第17条中看到的,看了蛮久都没有看懂视例代码。第17条的内容是要么为继承而设计,并提供文档说明,要么就禁止继承。在其中有一段示例构造器决不能调用可被覆盖的方法代码如下

父类代码

packagecom.sitech.test;

/**

* effect of java

*@authorliaowp

**/

publicclassSuper {

           publicSuper(){

                 overrideMe();

          }

          publicvoidoverrideMe(){

          }

}

子类代码

packagecom.sitech.test;

importjava.util.Date;

/**

* effect of java

*@authorliaowp

**/

public class Sub extends Super{

               private final Date date;

               Sub(){

                     date=newDate();

               }

              @Override

               public void overrideMe(){

                       System.out.println("时间"+date);

               }

              public static void main(String[] args) {

                        Sub sub=newSub();

                        sub.overrideMe();

              }

}

输出结果

       你可能会期待这个程序会打印出日期两次,但是它第一次打印的是null,因为overrideMe方法被super构造器调用的时候,构造器Sub还没有机会初始化date域。注意,这个程序观察到的final域处于2种不同的状态。还要注意,如果overrideMe已经调用了date中的任何方法,当Super改造器调用overrideMe的时候,调用就会抛出NullPointerException异常(原文)

问题提出

         看到很多的人看到上面的代码都会知道结果,但是我当时却卡在了为啥父类构造方法调用overrideMe是子类的?瞬间懵了,当时没有理解过来。脑子转不过来了,只能查查资料了,但是不知道怎么搜索。于是只能自己瞎折腾一下。于是先把代码加上打印:

优化之后代码

问题解决

        确实是调用的子类的overrideMe方法,还是不太懂。只能debug了,在debug之前我又在overrideMe方法加上了一个this,我想看看this代表的是谁。

代码
debug

        终于搞清楚了,main里面就是实例化了子类,this代表的就是子类,所以父类中构造方法中调用overrideMe的就是子类的overrideMe。完美

问题总结与分享

        人有时候容易思维定势,导致有时候别人很容易看出的问题自己一直懵在里面出不来,这个问题对于我来说就是这样的额,自己当时怎么都搞不懂,固定在一个地方了,问了朋友问了导师,瞬间就想清楚了在经过自己的验证,问题就是找到答案了。虽然固定在那是痛苦的,不过找到问题答案就是开心的。

        最近一直看资料看书,看到一段个人觉的非常不错的代码的分享给所有人。我们经常会看到字符串倒转的面试题,有很多实现方式,我就把自己看到的比较好的方式分享出来,这个方式也感觉跟我上面那个思维问题有点类似的感觉,个人感觉遇到字符串的倒转的问题的时候,很多会想到循环什么的。这个方法却出乎意料。代码如下:

        public static String reverse(String originStr) {

                      if(originStr ==null|| originStr.length() <= 1)

                                       returnoriginStr;

                     returnreverse(originStr.substring(1)) + originStr.charAt(0);//截取前面的补到后面去

       }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,198评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,334评论 3 398
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,643评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,495评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,502评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,156评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,743评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,659评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,200评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,282评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,424评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,107评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,789评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,264评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,798评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,435评论 2 359

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,657评论 18 399
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 1,990评论 0 3
  • 在多数情况下,初始化一个对象的最终步骤是去调用这个对象的构造方法。构造方法负责对象的初始化工作,为实例变量赋予合适...
    我是陈君本阅读 726评论 0 3
  • 20- 枚举,枚举原始值,枚举相关值,switch提取枚举关联值 Swift枚举: Swift中的枚举比OC中的枚...
    iOS_恒仔阅读 2,292评论 1 6
  • 早已把你的痕迹抹掉,仍旧想去寻回,不知是思念还是不甘,幻想还在…
    心亡眼瞎阅读 74评论 0 0