在實際的開發中,對於資料一致化的要求是比較重要的
例如:arraylist list = new arraylist()//構建了乙個容器 int arr = new int[10];
如果對將要儲存到arraylist中的資料型別沒有進行約束的話,就會導致容器裡放了各種型別的資料。
那麼取資料時,就可能需要強制型別轉換,浪費時間,執行效率低,甚至資料丟失。
所以為了解決這樣資料亂的情況,就要使用泛型裡裡面的資料約束。
arraylist< string> list = new arraylist();
< string>就是泛型的約束,用來約束資料型別的,要求容器裡儲存的資料必須是string型別的資料。
泛型約束的好處:
1、資料一致化
2、避免了沒有必要的強制型別轉換
3、避免了因資料型別不一致導致的問題
4、操作統一化
泛型:
《無意義英文大寫字母的佔位符》 例如:< t>、< e>
使用泛型泛型來進行約束資料型別,同時讓**更具普適性
格式:
arraylist< string> list = new arraylist();—idea
arraylist< string> list = new arraylist< string>();—eclipse
語法格式:許可權修飾符 [static] 《自定義的無意義的佔位符》 返回值型別(可以使用自定義的泛型) 方法名字 (引數列表必須帶有乙個自定義的引數)){}
帶有自定義泛型的方法,是依賴於方法的引數來確定泛型的返回值的
例子
class
catpublic
class
demo2
;printarr
(arr);}
/** * 帶有自定義泛型的方法
* @param t 引數用於約束泛型的具體型別
* @param 自定義泛型的佔位符
* @return
*/public
static
t test1
(t t)
public
static
t printarr
(t arr)
return arr[0]
;}}
執行結果:
哈哈哈
10小貓12
345
語法格式:
class 類名《自定義泛型無意義的佔位符》
【注意事項】
1、在類名之後使用自定義的佔位符,宣告當前類帶有泛型
2、類宣告的自定義泛型,就是建立物件的時候確定具體的泛型是哪一種
test1< stirng>stringtest1 = new test<>();
在類內凡是使用到的都會被替換成string
3、乙個類帶有自定義的泛型,但是在建立類物件的時候沒有約束泛型具體的資料型別,那麼在類中所有的泛型都會被object代替。
4、類宣告了自定義的泛型之後,不能用於靜態的成員變數和靜態成員方法。因為靜態的成員變數和靜態成員方法在類載入的時候,就已經在記憶體的資料區載入完,而畢泛型具體資料型別是在建立的物件的時候確定的
例子
class
test1
public
void
testargs
(t t)
public
boolean
testboolean
(t t)
/*public static t teststatic (t t) */
/* 自己定義乙個泛型和類的泛型沒有關係*/
/*public static e teststatic(e e) */
}class
dogpublic
class
demo3
}
執行結果:
123
fanxing_test.dog@1b6d3586
fanxing_test.dog@4554617c
語法格式:
inte***ce 介面名字< t>
例子
inte***ce
a// 當前類去實現乙個介面,這個類名字後面必須和介面後面的泛型保持一致
class
testa
implements
a }public
class
demo4
}
執行結果:
哇哈哈
泛型初步理解
在c 語言中,泛型是乙個具有佔位符 的類 結構 介面和方法,主要被用於處理演算法和資料結構,是他們更易於被使用。泛型類和泛型方法可以根據其所儲存的操作和資料的型別來進行引數化。換言之,泛型就是通過引數化型別來實現在同乙份 上操作多種資料型別。利用 引數化型別 將型別抽象化,從而實現靈活的復用,由此可...
泛型簡單認識
自定義范型宣告的位置 public t a t t 也可以直接在類上進行宣告。public calss demo6 當使用靜態方法是,類中的宣告有的情況下,依然需要在方法中單獨宣告。publlic static void c t t public class stringfoo public str...
泛型初認識
資料型別是每乙個程式設計人員都要認真研究的知識,這篇文章就來介紹一下菜鳥了解資料型別的 心酸 歷程。從開始接觸程式語言就有了資料型別,諸如int string boolean time float double 慢慢地有認識了實體型別,還有就是接下來的各種集合類。不管怎麼講他們都是由object型別...