java入門總結part5
泛型:在不知道使用的資料型別是什麼,或資料型別可以是多種時使用
簡單使用
class 類名 <泛型,泛型...>{
屬性
方法
}
類名<具體型別>物件名稱 = new 類名稱<具體型別>();
具體程式碼:
package javalearn; class Point<T>{//註明是泛型,一般用大寫T T x; T y; public void tell(){ System.out.println(x+" "+y); } } public class Learn {
public static void main(String[] args) { Point<String> name = new Point<String>();//傳入字串型別,記住首字母大寫 name.x="李明"; name.y="李大媽"; name.tell(); Point<Integer> age = new Point<Integer>();//傳入整型,記住首字母大寫 age.x=15; age.y=18; age.tell(); Point<Float> weight = new Point<Float>();//傳入浮點型,記住首字母大寫 weight.x=54.5f; weight.y=183.2f; weight.tell(); } }
執行結果:
李明 李大媽 15 18 54.5 183.2
構造方法中的使用:
比較簡單,直接寫構造方法的程式碼:
public Point(T x){
this.x=x;
}
ok,其他與上面一樣不多說。
多個泛型的使用
就是多寫幾個用逗號隔開,具體程式碼:
package javalearn; class Point<T,K>{//注意一般都是大寫字母表示泛型 T x; K y; public void tell(){ System.out.println(x+" "+y); } } public class Learn {
public static void main(String[] args) { Point<String,Integer> name = new Point<String,Integer>(); name.x="李明"; name.y=10; name.tell(); Point<Integer,String> age = new Point<Integer,String>(); age.x=15; age.y="李仨子"; age.tell(); } }
執行結果:
李明 10 15 李仨子
萬用字元
當你傳參時不知道引數型別時,使用萬用字元?,具體程式碼:
package javalearn; class Point<T>{//注意一般都是大寫字母表示泛型 T x; public void tell(){ System.out.println(x); } } public class Learn {
public static void main(String[] args) { Point<String> name = new Point<String>();//這是字串型別 name.x="李明"; say(name); Point<Integer> age = new Point<Integer>();//這時整型 age.x=20; say(age); } public static void say(Point<?> i) {//使用了萬用字元?,可以傳進來任何資料型別 i.tell(); } }
執行結果:
李明
20
泛型介面,泛型方法,泛型陣列都類似,可以自己實踐,這裡只寫一個泛型陣列吧
package javalearn; public class Learn {
public static void main(String[] args) { String arr[]={"易烊千璽","我喜歡你","就可以啦"}; Integer arrint[]={2000,11,28};//記得整型用Integer,首字母大寫! tell(arr); System.out.println(); tell(arrint); } public static <T>void tell(T arr[]) {//記得前面<T>不能忘 for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+" "); } } }
執行結果:
易烊千璽 我喜歡你 就可以啦 2000 11 28