為什麼要運用泛型:
將執行時的異常提前到編譯時。
避免了多餘的強制轉型。
jdk1.5之後才有
泛型在集合中的常見應用:
arraylistlist = new arraylist(); true 推薦使用。
arraylistlist = new arraylist(); false
arraylistlist = new arraylist(); false
//以下兩種寫法主要是為了兼顧新老系統的兼用性問題。
* arraylistlist = new arraylist(); true
arraylist list = new arraylist(); true
注意: 泛型沒有多型的概念,左右兩邊的資料 型別必須 要一致,或者只是寫一邊的泛型型別。要用包裝類!!!!
推薦使用: 兩邊都寫泛型。
一邊寫泛型另一邊不寫也語法正確是為了照顧新老系統的相容【假設有jdk1.5之前版本寫的工具類返回乙個不帶泛型的容器或者需要的引數是不帶泛型的,依然可以將帶泛型的傳進去使用。】
public
class rrr
public
static
qq get(qq o)
}
注意方法的返回值是在傳入實參的時候確定的。
注意, 返回值前面的只是乙個佔位符, 說明這個方法需要用到泛型qq。可以是返回值或者是實參之一是qq型別。
建立物件的時候確定泛型的型別。
所以不能作用於靜態方法!!!!,如果靜態方法也要用泛型,則要自己定義方法上的泛型!!!!!
class myarrayselse
if(i==arr.length-1)else
}return sb.tostring();
}public
static
void
print(t t)
}public
class demo3 ;
myarraystool = new myarrays();//這裡確定了泛型型別就是integer類!!!!!!
tool.reverse(arr);
system.out.println("陣列的元素:"+tool.tostring(arr));
myarraystool2 = new myarrays();
string arr2 = ;
tool2.reverse(arr2);
myarrays tool3 = new myarrays();//不指定泛型則預設為object型別!!!!!
arraylistlist = new arraylist();
}
泛型介面的定義格式:
inte***ce 介面名《宣告自定義泛型》
泛型介面要注意的事項:
1. 介面上自定義的泛型的具體資料型別是在實現乙個介面的時候指定 的。
2. 在介面上自定義的泛型如果在實現介面的時候沒有指定具體的資料型別,那麼預設為object型別。
inte***ce
daopublic
class
demo
implements
dao
public
void add(string str){}//上面實現的時候指定了string 所以重寫只能是string型別,如果沒有指定的話預設object型別!!
}
如果實現乙個介面的時候,還不明確我目前要操作的資料型別,要等待建立介面實現類 物件的時候我才能指定泛型的具體資料型別。
則要在類上宣告泛型。
inte***ce
daopublic
class
demo4
implements
dao
public
void add(t t)
}
Day8之物件導向複習2
usr bin python3 coding utf 8 class student object def init self name self.name name def str self return 學生名稱 s self.name 定義 str 方法後的輸出 print student x...
實習日記 Day8
今天是聊了很多天的一天 今日份心得體會的主題是 在聊天中學習 工作以外的興趣愛好 今天我竟然和導師閒聊好了幾小時,當然內容主要是圍繞著工作展開的話題。也許是昨天送的小禮物奏效了,又也許是因為今天真的很閒,以至於組裡有同事壓根沒來上班,再或者是因為上了年紀的男性長輩都比較喜歡 好為人師 我都不得而知 ...
坦克大戰 day 8
在tank類定義陣列,載入每一張。使用static關鍵字宣告的 塊叫靜態 塊。靜態塊用於初始化類,為類的屬性初始化。每個靜態 塊只會執行一次。如果有些 必須在專案啟動的時候就執行,那麼我們就可以使用靜態 塊來實現,這種 是主動執行的。坦克的陣列 private static image tankim...