HDU 6860 Fluctuation Limit
阿新 • • 發佈:2020-08-16
泛型
Java泛型設計原則:只要在編譯時期沒有出現警告,那麼執行時期就不會出現ClassCastException異常
泛型是提供給javac編譯器使用的,它用於限定集合的輸入型別,讓編譯器在原始碼級別上,即擋住向集合中插入非法資料。但編譯器編譯完帶有泛形的java程式後,生成的class檔案中將不再帶有泛形資訊,以此使程式執行效率不受到影響,這個過程稱之為“擦除”。
泛型類
泛型類就是把泛型定義在類上,使用者使用該類的時候,才把型別明確下來
// <T> 表明這是一個泛型類 public class ObjTool<T> { public T obj; public T getObj() { return obj; } public void setObj(T obj) { this.obj = obj; } }
泛型方法
定義泛型方法….泛型是先定義後使用的
class ObjTool{ // <T> 表明這是一個泛型方法 public <T> T getT(T t){return t; } public <T> void print(T t){ System.out.println(t); } }
// <T> 表明這是一個泛型介面 public interface Inter<T> { public abstract void show(T t); }
型別萬用字元
泛型中的<Object>
並不是像以前那樣有繼承關係的,也就是說List<Object>
和List<String>
是毫無關係的,所以需要有萬用字元代表所有型別
?號萬用字元表示可以匹配任意型別,任意的Java類都可以匹配…..
當我們使用?號萬用字元的時候:
設定萬用字元上限
List<? extends Number>
List集合裝載的元素只能是Number的子類或自身
設定萬用字元下限
<? super Type>
傳遞進來的只能是Type或Type的父類
無論是設定萬用字元上限還是下限,都是不能操作與物件有關的方法,只要涉及到了萬用字元,它的型別都是不確定的!