最近在读这本书,不可否认是本好书,不过错误难免,对于书中的一些有所异议,所以记录在案,仅供参考:
1 20条建议: 34页, 什么会编译进CLASS, 笔者说是final基本类型或者string,其实不全面也不正确: 第一:必须要是常量表达式赋值,即不能是null或者其他类方法返回的值,参加JAVA解惑:类的战争;比如String x=OtherClass.Str; 而OtherClass.Str=null的时候,不会编译进去; 第二: 基本类型假设在方法内,不管用不用final都能编译进去。 笔者的意思可能是final基本类型成员变量可以编译进常量池而已。
2 38条建议,63, 既然说分为2类:静态内部类和内部类,那么按照这里推理:普通内部类包含成员内部类+局部内部类+匿名内部类;
那么后文说普通内部类含有外部类引用就不准确了, 因为局部类和匿名内部类不需要含有外部类引用。
参考Effective java的分类个人觉得很标准:
嵌套类(nested class):静态成员类(static member class),非静态成员类(nonstatic member class),匿名类(anonymous class),局部类(local class),后三种统称为内部类(innner class).
3 69条建议: 116 , vectory->vector
5 94条建议;170 创建泛型数组也可以(E[])new Object[5],不定非要传入类型参数E的CLASS, 因为实际上数组底部是OBJECT数组的话,通吃所有类型数组;传入CLASS参数,然后ARRAY.NEW出来的还是需要类型转化,唯一有点区别的就是一个底部是通吃的OBJECT数组,一个是对应的类型的数组。从外面看没有区别。
6 102条建议: 182, m2变量的getDeclaredMethod()应该是getMethod(),表述反了。
8 137条建议:266 小标题(1)调整堆内存大小,应该去掉“堆”,因为下面也讲了栈内存调整。
9 100条建议: 180, 中间//表明类型和实际类型应该都是Object数组。不是String数组