導航:首頁 > 軟體資訊 > 泛型app有什麼用

泛型app有什麼用

發布時間:2022-10-06 16:47:44

java里泛型有什麼作用我怎麼覺得那個可寫可不寫

泛型是java jdk1.5出的新功能。它主要是對同一種類型做的集合,有很多人說他不好用,但是sun既然提供了他就是讓我們來用的,這樣可以少些很多代碼。

android activity後面加泛型有什麼用

加泛型是為了控制此activity的所處理數據的類型,類型可以是固定的一個類,也可以所繼承父類的子類,泛型是框架搭的一個重要要素。

❸ java中泛型是什麼意思,作用是什麼

java 泛型是java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。這種參數類型可以用在類、介面和方法的創建中,分別稱為泛型類、泛型介面、泛型方法。
泛型(Generic type 或者 generics)是對 Java 語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。
可以在集合框架(Collection framework)中看到泛型的動機。例如,Map 類允許您向一個 Map 添加任意類的對象,即使最常見的情況是在給定映射(map)中保存某個特定類型(比如 String)的對象。
因為 Map.get() 被定義為返回 Object,所以一般必須將 Map.get() 的結果強制類型轉換為期望的類型,如下面的代碼所示:

Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");

要讓程序通過編譯,必須將 get() 的結果強制類型轉換為 String,並且希望結果真的是一個 String。但是有可能某人已經在該映射中保存了不是 String 的東西,這樣的話,上面的代碼將會拋出 ClassCastException。
理想情況下,您可能會得出這樣一個觀點,即 m 是一個 Map,它將 String 鍵映射到 String 值。這可以讓您消除代碼中的強制類型轉換,同時獲得一個附加的類型檢查層,該檢查層可以防止有人將錯誤類型的鍵或值保存在集合中。這就是泛型所做的工作。

泛型的好處
Java 語言中引入泛型是一個較大的功能增強。不僅語言、類型系統和編譯器有了較大的變化,以支持泛型,而且類庫也進行了大翻修,所以許多重要的類,比如集合框架,都已經成為泛型化的了。
這帶來了很多好處:
1,類型安全。 泛型的主要目標是提高 Java 程序的類型安全。通過知道使用泛型定義的變數的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在於程序員的頭腦中(或者如果幸運的話,還存在於代碼注釋中)。
2,消除強制類型轉換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉換。這使得代碼更加可讀,並且減少了出錯機會。
3,潛在的性能收益。 泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制類型轉換(沒有泛型的話,程序員會指定這些強制類型轉換)插入生成的位元組碼中。但是更多類型信息可用於編譯器這一事實,為未來版本的 JVM 的優化帶來可能。由於泛型的實現方式,支持泛型(幾乎)不需要 JVM 或類文件更改。所有工作都在編譯器中完成,編譯器生成類似於沒有泛型(和強制類型轉換)時所寫的代碼,只是更能確保類型安全而已。

Java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,提高代碼的重用率。
泛型在使用中還有一些規則和限制:
1、泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型。
2、同一種泛型可以對應多個版本(因為參數類型是不確定的),不同版本的泛型類實例是不兼容的。
3、泛型的類型參數可以有多個。
4、泛型的參數類型可以使用extends語句,例如<T extends superclass>。習慣上成為「有界類型」。
5、泛型的參數類型還可以是通配符類型。例如Class<?> classType = Class.forName(Java.lang.String);
泛 型還有介面、方法等等,內容很多,需要花費一番功夫才能理解掌握並熟練應用。在此給出我曾經了解泛型時候寫出的兩個例子(根據看的印象寫的),實現同樣的 功能,一個使用了泛型,一個沒有使用,通過對比,可以很快學會泛型的應用,學會這個基本上學會了泛型70%的內容。

❹ 為什麼要使用泛型使用泛型有什麼作用

泛型的作用就是提高代碼的重用性,你肯定知道函數重載吧,但是重載的話還是太煩,要累贅的寫這么多的重復代碼,泛型就是就是避免強制類型轉換,減少裝箱拆箱提高性能,減少錯誤

❺ 什麼叫泛型有什麼作用

泛型。即通過參數化類型來實現在同一份代碼上操作多種數據類型。泛型類和泛型方法同時具備可重用性、類型安全和效率,這是非泛型類和非泛型方法無法具備的。泛型通常用與集合以及作用於集合的方法一起使用。

泛型是c#2.0的一個新增加的特性,它為使用c#語言編寫面向對象程序增加了極大的效力和靈活性。不會強行對值類型進行裝箱和拆箱,或對引用類型進行向下強制類型轉換,所以性能得到提高。

Java 的泛型

Java 泛型的參數只可以代表類,不能代表個別對象。由於Java泛型的類型參數之實際類型在編譯時會被消除,所以無法在運行時得知其類型參數的類型,而且無法直接使用基本值類型作為泛型類型參數。Java編譯程序在編譯泛型時會自動加入類型轉換的編碼,故運行速度不會因為使用泛型而加快。

由於運行時會消除泛型的對象實例類型信息等缺陷經常被人詬病,Java及JVM的開發方面也嘗試解決這個問題,例如Java通過在生成位元組碼時添加類型推導輔助信息,從而可以通過反射介面獲得部分泛型信息。通過改進泛型在JVM的實現,使其支持基本值類型泛型和直接獲得泛型信息等。

❻ 泛型的作用是什麼

它有什麼優勢?它對性能有影響嗎?它在執行時的行為是什麼?.NET BCL中有哪些泛型類型?舉例說明平時編程中您定義的泛型類型。 泛型的作用在於「演算法的重用」。(這點其實很好理解,原來的ArrayList只能接受Object,現在通過List可以接受任何類型,也就是說ArrayList的方法都被各個類型重用了。但是Dot Net的泛型有個比較制肘地方,就是你很難對數值類型(值類型)進行演算法抽象,因為這牽涉到運算符重載的問題,同時Dot Net的泛型的類型參數也不能約束成一個基元值類型(如int、double、float) 。) 它有什麼優勢? 第一:源代碼保護。(如果你知道C++模板對泛型的實現機制,就會知道C++在編譯的時候根據對泛型的調用,自動「內聯」了一個實現,這樣泛型的內容就暴露了,爾DotNet的實現方式就不同了,泛型類和方法會被編譯成IL,在執行的時候由JIT負責將IL變化為指定類型參數的本地代碼,從而保護了源代碼) 第二:類型安全。(這點是最顯而易見的,拋棄了使用ArrayList時各種醜陋的強制類型轉換) 第三:更清晰地代碼。因為沒有了強制類型轉換,所以代碼自然顯得更清晰,但是使用泛型時候帶來的<>有時候確實也會讓人搞糊塗,幸好泛型方法可以用類型推斷或者using語句來進一步簡化寫法。 第四:更好的性能,因為值類型可以避免裝箱和拆箱所帶來的損耗(垃圾回收的次數也會減少)。(這點正是泛型神奇的地方,開發歷史上抽象能力的上升往往意味著性能的下降,但是泛型卻不是!泛型抽象了演算法,但是C++和DotNet對泛型的實現能夠讓性能無損,並且更快。Java的擦除法泛型就沒有這種性能上的好處。) 它對性能有影響嗎? 對性能有積極的影響,因為值類型可以避免裝箱和拆箱所帶來的負面影響,避免了垃圾回收,使得性能顯著提高。但是對引用類型這種影響就不明顯了。但是需要注意的是首次為一個特定數據類型調用方法時,CLR都會為這個方法生成本地代碼。這會增大應用程序的工作集大小,從而影響性能。 它在執行時的行為是什麼? 使用泛型類型參數的一個方法在進行JIT編譯時,CLR獲取IL,用指定的類型實參進行替換,然後創建本地代碼。需要特別注意的是引用類型是共享代碼的,而對值類型就會為每一種生成獨立的一份類型代碼。但是需要指出的是引用類型的這種代碼共享並不會造成封閉類型只執行一次構造函數(就算是靜態構造函數也是這樣的)。 .NET BCL中有哪些泛型類型? List、Dictionary、Queue、Stack、SortedList和SortedDictionary、LinkedList等等。 舉例說明平時編程中您定義的泛型類型。泛型的出現會替換原來一部分使用多態的地方從而提高性能和帶來更好的編譯時檢查,這樣就不需要在子類和超類(介面)間頻繁轉換了。

❼ java中的泛型是幹嘛的,起到什麼作用什麼情況下才能用到泛型

泛型:規定了此集合中元素的類型。
例如:

ArrayList<Integer> arr = new ArrayList<Integer> ();

這樣就創建了一個包含整數的 ArrayList 對象。
如果要自己定義泛型類,就用如下形式:

class MyCollection<E> {...}

尖括弧中的類型可以有限制,例如你需要讓 MyCollection 中的類型都具有可比性,可以用如下格式:

class MyCollection<E extends Comparable> {...}

❽ c#泛型有什麼作用

關於object類型:
1.object類型可以來引用任何類型的實例;
2.object類型可以存儲任何類型的值;
3.可以定義object類型的參數;
4.可以把object作為返回類型。
但是--這樣做有很大的問題

1.會因為程序員沒有記住使用的類型而出錯,造成類型不兼容;
2.值類型和引用類型的互化即裝箱拆箱使系統性能下降。

C#2.0提出的泛型就是避免強制類型轉換,減少裝箱拆箱提高性能,減少錯誤。

System.Collections.Generic命名空間提供許多集合類和介面的泛型版本。
所謂泛型:
即通過參數化類型來實現在同一份代碼上操作多種數據類型。泛型編程是一種編程範式,它利用「參數化類型」將類型抽象化,從而實現更為靈活的復用。
C#泛型賦予了代碼更強的類型安全,更好的復用,更高的效率,更清晰的約束。
C#泛型能力由CLR在運行時支持,區別於C++的編譯時模板機制,和java的編譯時的「搽拭法」。這使得泛型能力可以在各個支持CLR的語言之間進行無縫的互操作。
C#泛型代碼在被編譯為IL和元數據時,採用特殊的佔位符來表示泛型類型,並用專有的IL指令支持泛型操作。而真正的泛型實例化工作以「on-demand」的方式,發生在JIT編譯時。
C#泛型編譯機制如下:
第一輪編譯時,編譯器只為Stack類型產生「泛型版」的IL代碼和元數據,並不進行泛型類型的實例化,T在中間只充當佔位符。
JIT編譯時,當JIT編譯器第一次遇到Stack時,將用int類型替換「泛型版」IL代碼與元數據中的T -- 進行泛型類型的實例化。
CLR為所有類型參數為「引用類型」的泛型類型產生同一份代碼,但如果類型參數為「值類型」,對每一個不同的「值類型」,CLR將為其產生一份獨立的代碼。
C#泛型的幾個特點
如果實例化泛型類型的參數相同,那麼JIT編譯器會重復使用該類型,因此C#的動態泛型能力避免了C++靜態模板可能導致的代碼膨脹的問題。
C#泛型類型攜帶有豐富的元數據,因此C#的泛型類型可以應用於強大的反射技術。
C#的泛型採用「基類、介面、構造器、值類型/引用類型」的約束方式來實現對類型參數的「顯示約束」,提高了類型安全的同時,也喪失了C++模板基於「簽名」的隱式約束所具有的高靈活性。
C#泛型類在編譯時,先生成中間代碼IL,通用類型T只是一個佔位符。在實例化類時,根據用戶指定的數據類型代替T並由即時編譯器(JIT)生成本地代碼,這個本地代碼中已經使用了實際的數據類型,等同於用實際類型寫的類,所以不同的封閉類的本地代碼是不一樣的。按照這個原理,我們可以這樣認為:泛型類的不同的封閉類是分別不同的數據類型。
這樣泛型不僅更加靈活,也同時將代碼的簡便和提高到一個層次!不用再為具體不同的重載方法寫具體的代碼了!
C# 泛型是開發工具庫中的一個無價之寶。它們可以提高性能、類型安全和質量,減少重復性的編程任務,簡化總體編程模型,而這一切都是通過優雅的、可讀性強的語法完成的。盡管 C# 泛型的根基是 C++ 模板,但 C# 通過提供編譯時安全和支持將泛型提高到了一個新水平。C# 利用了兩階段編譯、元數據以及諸如約束和一般方法之類的創新性的概念。毫無疑問,C# 的將來版本將繼續發展泛型,以便添加新的功能,並且將泛型擴展到諸如數據訪問或本地化之類的其他 .NET Framework 領域。
當然,C#的泛型還很多應用,現在我還只是了解了它的機制和原理,在接下來的學習中我會系統得學習泛型所支持的抽象泛型,介面泛型,結構和委託等!
具體的建議你看一下《deep in C#》這本書,上面解釋的很生動,很有趣。中文翻譯版的叫《深入理解C#》(第二版)。

❾ java的泛型有沒有用

當然有用,其實泛型存在的意義就好比抽象類,抽象類是用來規范子類。而泛型對於實現代碼復用,提高開發效率幫助很大。
當然不用泛型可不可以,答案是可以,其實很多程序員開發多年都忘記使用泛型的方做開發,這是一個深度問題,而不是廣議問題。要想弄懂泛型,就必須要知道它存在的意義。
在項目研發中,經常會出現一個方法,多種不同類型的對象進行調用,簡單的做法就是為各自的類型寫上一個方法,獨立調用,比如:
//兩個整數相加
public int plus(int a, int b){
return a+b;
}
//兩個字元串相連接
public string connectStr(string str1, string str2){
return str + str2
}
上面是兩個函數,一個是整數的相加,一個是字元串的連接,當然,這是很簡單兩個函數;但是可以看出兩個函數的共同之處,都是相加,"+"對於字元串來講是字元串的連接,但是可以把這兩個函數寫成一個函數,如下:
public T plusTwoObj(T objT1, T objT2){
return objT1 + obT2;
}
這個函數中出現的T,其實就是一個佔位符,也就是這個位置由T來代替;類似於佔座,它起到的作用只是佔座,不會有實際的意義,最終這個位置是由其他人來坐的;比如:T給int佔座,給string佔座,給float佔座,給自定義類型佔座,實際的操作是由其它類型來處理的,其它類型會代替它;
這個函數是由兩個函數提出的公有函數,這樣,它就不局限於某一個類型的函數進行相加處理,而是許多類型可通用的方法,所以,泛型有代碼復用、提高研發效率的作用;而定義成泛型,而不用所有類型基類 object類型呢,就涉及數據類型轉換的問題,類型轉換的拆箱和裝箱需要消耗大量內存和cpu資源。
泛型需要很系統的來解釋,幾句話可能說不清,建議你還是把教材視頻等多翻出來看看。建議把泛型和抽象類結合在一起看,兩者的相似點和區別。

❿ java中的泛型具體能應用在哪些方面上

泛型本質上是提供類型的"類型參數",它們也被稱為參數化類型(parameterized type)或參量多態(parametric polymorphism)。其實泛型思想並不是 Java 最先引入的,C++ 中的模板就是一個運用泛型的例子。
具體應用會在實際開發中領悟到的!

閱讀全文

與泛型app有什麼用相關的資料

熱點內容
電影大象生殖器 瀏覽:740
英語視聽說伺服器地址輸錯了怎麼辦 瀏覽:107
重生楊過收穆念慈,洗澡 瀏覽:836
工商總局app在哪裡下載 瀏覽:246
免費成人影院網站是多少 瀏覽:156
hp伺服器閃紅燈什麼意思 瀏覽:244
php加入購物車代碼 瀏覽:921
奇跡男孩電影完整版免費播放 瀏覽:663
羅曼史生孩子在那一段在幾分鍾 瀏覽:953
成龍40部經典電影 瀏覽:795
程序員連出兩次線上事故 瀏覽:427
啄木鳥電影什麼意思 瀏覽:292
主角叫柱子的鄉村小說 瀏覽:962
肉特別多的電影 瀏覽:970
好的在觀看網站 瀏覽:307
vip免費影視劇網站 瀏覽:924
恐怖鬼片免費版在線觀看 瀏覽:539
印度神話電影排行前十 瀏覽:510
主角開飛機重生流 瀏覽:760
java函數式編程教程 瀏覽:271