有時候,類和方法需要對型別變數加以約束,比如你有乙個方法,你只希望它接收某個特定型別及其子型別作為引數。
下面就舉乙個方法限定接收引數的型別的例子來說明如何限定型別變數。
首先有幾個簡單的輔助類:
package generic;
public class person extends animal
public string getname()
public void setname(string name)
@override
public string tostring()
}
package generic;
public class student extends person
public string getstudentnumber()
public void setstudentnumber(string studentnumber)
@override
public string tostring()
}
package generic;
public class teacher extends person
public string getteachernumber()
public void setteachernumber(string teachernumber)
@override
public string tostring()
}
下面是乙個測試類,裡面包含了乙個限定了接收引數的型別的方法:
package generic;
public class test
/ **
* t的限定型別決定了在方法中可以呼叫t的例項的哪些方法;
* * @param person
* @return
*/public static string getpersoninfo(t t)
}
執行測試類的結果如下:
person [name=li]
student [studentnumber=1, name=yuncong]
teacher [teachernumber=99, name=wangfang]
型別變數的限定只有extends這乙個關鍵字,extends可以接多個介面超型別,但是至多有乙個類,如果extends後面跟有類,這個類必須是第乙個。多個限定型別用&隔開。如:t extends person & comparable。
JAVA泛型方法與型別限定
泛型方法可以定義在普通類中,也可以定義在泛型類中 1 class arrayalg 5 注意 型別變數放在修飾符後 public static 當呼叫泛型方法時,方法名前尖括號中放入具體的型別 string middle arrayalg.getmiddle john q.public 大多數情況下...
Java泛型 自限定
public class abstractbootstrap,c extends channel 子型別b是父型別abstractbootstrap 的乙個型別引數,因此可以法返回到執行時例項的引用以支援方法的鏈式呼叫 1 自限定型別 class basicholder public void se...
Java泛型 萬用字元的限定
當我們宣告乙個泛型類變數時,編譯器會用具體的型別代替泛型類的型別變數。比如,我們有下面這些類 package generic version 1.00 2004 05 10 author cay horstmann public class pair public pair t first,t se...