讀<<Java解惑>>後的碎嘴子(第九章)

最終章--高級問題

86.第一條純娛樂,再一次說明了整型負數要比正數(不含0)多一個的問題

87.第二條也沒有什麼值得激動的地方,重複了34條中的浮點數足夠大加1不會變值的特性

88.本條初次涉及了泛型,也闡述了其最重要的erase特性,但這幾頁篇幅對於這5.0版的最大功能還遠遠不夠
總結:要意識到5.0泛型這一特性帶來的各個類庫(包括JDK和其它第三方庫)的重要改變,<<Effective Java>>有專門一章介紹的泛型的問題,CoreJava裏也用了很多例子來說明erase特性

89.本條闡述瞭如何設計一個存在內部類的泛型類,這種情況儘管比較少見。本書對泛型的說明很少,應該是怕和<<Effective Java>>內容重複

90.
public class Outer {
    class Inner1 extends Outer{}
    class Inner2 extends Inner1{}
}
編譯不通過,本條的翻譯相當地難懂,這條我沒怎麼看明白,總而言之,Inner2在同時要擁有一個Outer實例,還要調用Inner1的構造方法上遇到了麻煩,普通內部類機制會導致構造方式的改變
總結:就像<<Effective Java>>所說的,除非一定需要,否則應該使用靜態內部類

91.高級問題就是高級問題,大師已經進入了自娛自樂模式了,本條爲了安全着想還是不要太深入研究了

92.
public class Test {

	private final String name;

	Test(String name) {
		this.name = name;
	}

	private String name() {
		return name;
	}

	private void reproduce() {
		new Test("reproduce") {
			void printName() {
				System.out.println(name());
			}
		}.printName();
	}

	public static void main(String[] args) {
		new Test("main").reproduce();
	}
}
這個例子竟然可以通過編譯並且打印出main,這種奇怪的代碼估計也只有在這本書裏纔有了,總而言之name()方法因爲是private的,所以匿名內部類的printName()方法調用,實際上是被關聯到外部類Test實例的,也就是說,name()方法還是會訪問Test的name域,這真是難以理解

93.本條相當學術,闡述了final域的編譯值綁定機制,在現實中基本沒有這樣的事
總結:對於final域,其值會被綁定在客戶端類中,但是null值除外

94.我已然不行了,說什麼都沒用了這次
總結:我只記住了java.util.Random提供的隨機數種子是64位而java.security.SecureRandom提供的則有160位,不過這沒什麼意思

95.
public class ApplePie {
    public static void main(String[] args) {
        int count = 0;
        for(int i = 0; i < 100; i++); {
            count++;
        }
        System.out.println(count);
    }
}

import java.util.*;

public class BananaBread {

    public static void main(String[] args) {
        Integer[] array = { 3, 1, 4, 1, 5, 9 };
        Arrays.sort(array, new Comparator<Integer>() {
            public int compare(Integer i1, Integer i2) {
                return i1 < i2 ? -1 : (i2 > i1 ? 1 : 0);
            }
        });
        System.out.println(Arrays.toString(array));
    }
}

public class ChocolateCake {
    public static void main(String[] args) {
        System.out.println(true?false:true == true?false:true);
    }
}
本書的最後一條了,把代碼都放上來了,第一個例子很簡單,因爲多了個分號,使得for循環體爲空,然後按順序流程運行了一次count++。第二條是因爲嵌套三目運算符,造成了無法排序問題。第三條也很簡單,IDE會有警告
總結:終於完了,很有意思的一本書
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章