V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
amiwrong123
V2EX  ›  程序员

Java 编程思想第四版哪些章节需要对应去看第五版的《on Java 8》?

  •  
  •   amiwrong123 · 2019-08-20 10:04:28 +08:00 · 2907 次点击
    这是一个创建于 1953 天前的主题,其中的信息可能已经有所发展或是发生改变。

    java 编程思想第四版是基于 6 的,而《 on java 8 》是基于 java8 的。它是实际上的 java 编程思想第五版。 目前看到章节内部类,觉得讲得挺好,虽然有时例子代码很长,但现在都习惯了。 请问各位看过的 v 友,有哪些章节需要看完后再去看对应的《 on java 8 》里面的章节的吗?或者说应该不看 java 编程思想的这一章,而去看《 on java 8 》里面的章节?

    16 条回复    2019-08-20 14:19:10 +08:00
    xaplux
        1
    xaplux  
       2019-08-20 10:36:21 +08:00
    更正一下:第四版貌似是基于 JDK 5,其实最好的方式是两个都看
    amiwrong123
        2
    amiwrong123  
    OP
       2019-08-20 11:09:15 +08:00
    @xaplux
    我也想,可惜时间不够用啊。其实主要关心后面的,集合、泛型、并发编程,这几章的差异大不大
    xaplux
        3
    xaplux  
       2019-08-20 11:27:06 +08:00
    @amiwrong123 时间嘛,挤挤总会有的,可以搜一下:java6/7/8 新特性
    wleexi
        4
    wleexi  
       2019-08-20 11:29:31 +08:00
    好巧我也在看,我看到你后面一章 对象持有了。
    上面的代码是很长的,都有敲一遍理解下。
    amiwrong123
        5
    amiwrong123  
    OP
       2019-08-20 11:34:16 +08:00
    @xaplux
    嗯,争取多看了。现在知道的是,《 on java 8 》有一章叫函数式编程,这是 java8 的新特性吧。
    amiwrong123
        6
    amiwrong123  
    OP
       2019-08-20 11:38:00 +08:00
    @wleexi
    哈哈哈,挺巧。你还敲一遍呢,我只是从网上下载到源码,然后扔到 ide 里跑一跑试一试。
    另外,我觉得里面的例子设计的不错,但看书就是例子太长还没有关键字高亮,看起来就很累==
    wleexi
        7
    wleexi  
       2019-08-20 11:39:25 +08:00
    @amiwrong123 恩 重要的会自己写一遍, 内部类的章节差不多全自己写了。网上的我也下了。
    Cbdy
        8
    Cbdy  
       2019-08-20 11:58:46 +08:00 via Android
    可惜过两天 Java13 就出来了
    amiwrong123
        9
    amiwrong123  
    OP
       2019-08-20 11:59:10 +08:00
    @wleexi
    要不刚好请教你个问题:在内部类章,继承内部类节中。有如下代码:
    // innerclasses/InheritInner.java
    // Inheriting an inner class
    class WithInner {
    class Inner {}
    }
    public class InheritInner extends WithInner.Inner {
    //- InheritInner() {} // Won't compile
    InheritInner(WithInner wi) {
    wi.super();
    }
    public static void main(String[] args) {
    WithInner wi = new WithInner();
    InheritInner ii = new InheritInner(wi);
    }
    }
    这种语法叫做:enclosingClassReference.super();
    我很理解内部类对象因为需要一个外部类引用,所以构造器的参数是外部类引用。
    super()的语言看起来是在调用父类的构造器,super 必须写在构造器第一行,这也是的。
    但这里却是 wi.super(),看起来在外部类引用上调用 super(),这实在让人难以理解啊啊啊!
    amiwrong123
        10
    amiwrong123  
    OP
       2019-08-20 12:03:17 +08:00
    @Cbdy
    oracle 更新太快了吧,感觉大家都在用 8
    cabing
        11
    cabing  
       2019-08-20 12:27:09 +08:00
    java8 action。看完基本了解了~~
    xaplux
        12
    xaplux  
       2019-08-20 13:16:57 +08:00
    @amiwrong123 是的,炒鸡好用
    wleexi
        13
    wleexi  
       2019-08-20 13:47:16 +08:00
    InheritInner 只继承了内部类。InheritInner 同时声明了一个构造器。构造内部类对象需要一个外部类的引用。这个引用必须要初始化。
    amiwrong123
        14
    amiwrong123  
    OP
       2019-08-20 14:01:52 +08:00
    @wleexi
    那我感觉应该这么写啊,既然继承了父类,父类是个内部类,那么我在 super 里把这个外部类引用传给你不就好了:
    InheritInner(WithInner wi) {
    super(wi);//父类需要外部类引用,那就传给它
    }
    wleexi
        15
    wleexi  
       2019-08-20 14:17:36 +08:00
    只有引用是不够的。必须实例化外部类
    wleexi
        16
    wleexi  
       2019-08-20 14:19:10 +08:00
    不用死磕这个点。可以理解为 [规范就是这么规定的,没有为什么].
    至于为什么 这事设计层面的事情,可以以后再去研究。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5661 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 03:13 · PVG 11:13 · LAX 19:13 · JFK 22:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.