在Comparable/Comparator接口中通過泛型指定比較對象的數據類型, 在Collection集合中,通過泛型指定集合元素的類型。
泛型就是把數據類型參數化。
泛型的好處,可以在編譯時進行數據類型檢查。
如:
Collection<String> collection = new ArrayList<>(); 約束collection集合中只能存儲String類型的數據。
Collection collection = new ArrayList<String> (); 如果在定義collection集合時沒有指定泛型 ,在創建ArrayList對象時指定了泛型, 是沒有作用的, 當前的collection集合依然是存儲Object類型的數據。
定義一個攻擊接口Attackable, 封裝一個attack()攻擊操作
定義一個移動接口Movable, 封裝一個move()移動操作
定義一個坦克類Tank, 坦克既可以移動,又可以攻擊
定義一個戰斗機類Flighter, 戰斗機也可以移動與攻擊
定義一個導彈類Missile, 導彈只能攻擊不能移動
坦克,戰斗機,導彈都是武器, 所有武器都能攻擊
定義一個部隊類Army, 該部隊有若干武器(使用集合存儲武器對象). 在部隊類中定義一個添加武器的方法,可以把武器添加到集合中; 定義一個判斷指定的武器是否存在的方法; 定義一個方法, 給武器庫中所有的武器下達攻擊指令, 讓集合中的所有武器攻擊; 定義一個方法, 給所有武器下達移動指令, 讓集合中的能移動的武器移動
Tank t = new Tank();
t instanceof Tank 返回true
t instanceof Movable 返回true, Tank實現了Movable接口