java 编程思想第四版是基于 6 的,而《 on java 8 》是基于 java8 的。它是实际上的 java 编程思想第五版。 目前看到章节内部类,觉得讲得挺好,虽然有时例子代码很长,但现在都习惯了。 请问各位看过的 v 友,有哪些章节需要看完后再去看对应的《 on java 8 》里面的章节的吗?或者说应该不看 java 编程思想的这一章,而去看《 on java 8 》里面的章节?
1
xaplux 2019-08-20 10:36:21 +08:00
更正一下:第四版貌似是基于 JDK 5,其实最好的方式是两个都看
|
2
amiwrong123 OP @xaplux
我也想,可惜时间不够用啊。其实主要关心后面的,集合、泛型、并发编程,这几章的差异大不大 |
3
xaplux 2019-08-20 11:27:06 +08:00
@amiwrong123 时间嘛,挤挤总会有的,可以搜一下:java6/7/8 新特性
|
4
wleexi 2019-08-20 11:29:31 +08:00
好巧我也在看,我看到你后面一章 对象持有了。
上面的代码是很长的,都有敲一遍理解下。 |
5
amiwrong123 OP @xaplux
嗯,争取多看了。现在知道的是,《 on java 8 》有一章叫函数式编程,这是 java8 的新特性吧。 |
6
amiwrong123 OP |
7
wleexi 2019-08-20 11:39:25 +08:00
@amiwrong123 恩 重要的会自己写一遍, 内部类的章节差不多全自己写了。网上的我也下了。
|
8
Cbdy 2019-08-20 11:58:46 +08:00 via Android
可惜过两天 Java13 就出来了
|
9
amiwrong123 OP @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(),这实在让人难以理解啊啊啊! |
10
amiwrong123 OP @Cbdy
oracle 更新太快了吧,感觉大家都在用 8 |
11
cabing 2019-08-20 12:27:09 +08:00
java8 action。看完基本了解了~~
|
12
xaplux 2019-08-20 13:16:57 +08:00
@amiwrong123 是的,炒鸡好用
|
13
wleexi 2019-08-20 13:47:16 +08:00
InheritInner 只继承了内部类。InheritInner 同时声明了一个构造器。构造内部类对象需要一个外部类的引用。这个引用必须要初始化。
|
14
amiwrong123 OP @wleexi
那我感觉应该这么写啊,既然继承了父类,父类是个内部类,那么我在 super 里把这个外部类引用传给你不就好了: InheritInner(WithInner wi) { super(wi);//父类需要外部类引用,那就传给它 } |
15
wleexi 2019-08-20 14:17:36 +08:00
只有引用是不够的。必须实例化外部类
|
16
wleexi 2019-08-20 14:19:10 +08:00
不用死磕这个点。可以理解为 [规范就是这么规定的,没有为什么].
至于为什么 这事设计层面的事情,可以以后再去研究。 |