c泛型和java泛型的區別,java泛型類和泛型方法的區別

2021-03-03 20:30:14 字數 1687 閱讀 7717

1樓:育知同創教育

泛型技術在c#和java之中的使用方式看似相同,但實現上卻有著根本性的分歧,c#裡面泛型無論在程式原始碼中、編譯後的il中(intermediate language,中間語言,這時候泛型是一個佔位符)或是執行期的clr中都是切實存在的,list與list就是兩個不同的型別,它們在系統執行期生成,有自己的虛方法表和型別資料,這種實現稱為型別膨脹,基於這種方法實現的泛型被稱為真實泛型。

java語言中的泛型則不一樣,它只在程式原始碼中存在,在編譯後的位元組碼檔案中,就已經被替換為原來的原始型別(raw type,也稱為裸型別)了,並且在相應的地方插入了強制轉型**,因此對於執行期的java語言來說,arraylist與arraylist就是同一個類。所以說泛型技術實際上是java語言的一顆語法糖,java語言中的泛型實現方法稱為型別擦除,基於這種方法實現的泛型被稱為偽泛型。

java 泛型類和泛型方法的區別

2樓:好程式設計師

在java中

泛型類:是在例項化類的時候指明泛型的具體型別。

泛型方法:是在呼叫方法的時候指明泛型的具體型別。

定義泛型方法時:必須在返回值前邊加一個,來宣告這是一個泛型方法,持有一個泛型t,然後才可以用泛型t作為方法的返回值,泛型方法不是僅僅可以有一個引數class,可以根據需要新增其他引數。

定義泛型類時:class的作用就是指明泛型的具體型別,而class型別的變數c,可以用來建立泛型類的物件

java泛型出錯的具體區別 20

3樓:安徽新華電腦專修學院

集合的泛型 你就當 這個泛型 代表 這個列表每行元素的內容。

假如是泛型放的是object,object是所有類的父類,所以可以放入所有型別的物件。

如果是integer 那麼只能放入integer物件或者integer的子類物件

如果是string 同理。

4樓:fly事在人為

泛型內的型別不同導致的

泛型和陣列以及java是如何實現泛型的

5樓:安徽新華電腦

要區分陣列和泛型容器的功能,這裡先要理解三個概念:協變性(covariance)、逆變性(contravariance)和無關性(invariant)。

若類a是類b的子類,則記作a ≦ b。設有變換f(),若:

當a ≦ b時,有f(a)≦ f(b),則稱變換f()具有協變性;

當a ≦ b時,有f(b)≦ f(a),則稱變換f()具有逆變性;

如果以上兩者皆不成立,則稱變換f()具有無關性。

在java中,陣列具有協變性,而泛型具有無關性,示例**如下:

object array = new string[10];

//編譯錯誤

arraylistlist=new arraylist();

這兩句**,陣列正常編譯通過,而泛型丟擲了編譯期錯誤,應用之前提出的概念對**進行分析,可知:

1、string ≦ object

2、陣列的變換可以表達為f(a)=a,通過之前的示例,可以得出下推論:

f(string) = string 以及 f(object) = object;

4、通過**驗證,string ≦ object 是成立的,由此可見,陣列具有協變性。

泛型和泛型集合的區別,java集合和泛型集合的區別?

其實不應該說是兩者的區別的,他們是一個包含的關係!在物件導向程式設計中有一個術語,叫泛化,而這個泛型的 正是 於這裡!所謂的泛型就是指的儲存的是其父型別,而實現使用時宣告好子型別而已。不管是在java還是c 中,所有的型別都是基於object這個基礎型別的。可以認為所有的其他型別都是object的泛...

java中泛型的作用,java中泛型的作用

初學java,看了thinking in java的泛型一章,java泛型我只看到一個作用 能夠進行編譯期間型別檢查。除此之外還有什麼作用呢?特別的是跟 泛型 這個詞有關係的作用?由於擦除的關係,能用java泛型寫的 直接針對object類來寫就能達到目的 只是沒了編譯期型別檢查另外某些地方要自己新...

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

它有什麼優勢?它對效能有影響嗎?它在執行時的行為是什麼?bcl中有哪些泛型型別?舉例說明平時程式設計中您定義的泛型型別。泛型的作用在於 演算法的重用 這點其實很好理解,原來的arraylist只能接受object,現在通過list可以接受任何型別,也就是說arraylist的方法都被各個型別重用了。...