1. 程式人生 > 實用技巧 >MyBatis的parameterType傳入引數型別

MyBatis的parameterType傳入引數型別

泛型

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的父類

無論是設定萬用字元上限還是下限,都是不能操作與物件有關的方法,只要涉及到了萬用字元,它的型別都是不確定的!