泛型-Java與C#

泛型.jpg

泛型是什么?

? 泛型:是可以在編程時(shí)难衰,不確定使用某種類型時(shí)光坝,用它來代替要使用的類献宫,使之可以接受使用者指定的類观谦,相當(dāng)于類型參數(shù)化.

? (百度百科上是這樣定義的:1.在程序編碼中一些包含類型參數(shù)的類型,也就是說泛型的參數(shù)只可以代表類靴患,不能代表個(gè)別對象仍侥。(這是當(dāng)今較常見的定義)2.在程序編碼中一些包含參數(shù)的類。其參數(shù)可以代表類或?qū)ο蟮鹊仍Ь#ㄈ藗兇蠖喟堰@稱作模板)不論使用哪個(gè)定義农渊,泛型的參數(shù)在真正使用泛型時(shí)都必須作出指明。)

泛型怎么用?

? 泛型的用法:1. 泛型方法或颊;2. 泛型類砸紊;

  1. 泛型方法

    泛型方法可以使方法根據(jù)用戶的使用讓類型參數(shù)化, 可以在接受不同的類型;

    java:
    public class HelloWorld {
        public static void main(String[] args) {
            Print("Hello World");
            Print(123);
        }
        
     public  static <T> void Print (T printValue){
            System.out.println(printValue);
        }
    }
    
    c#
    static void Main(string[] args) 
    {
          Print("Hello world");
          Print(123);
          Console.Read();
    }
    
    public static void Print<T>(T printValue)
    {
     Console.WriteLine(printValue);
    }
    

    兩個(gè)例子的打印結(jié)果都是一樣的:

    Hello World
    123
    

? C#中的泛型方法中的泛型參數(shù)(T) 是寫在方法名稱后面

? Java中的泛型方法中的泛型參數(shù)(T)是寫在返回類型的前面

? 如果要使用多個(gè)泛型參數(shù)則是在<>中兩個(gè)參數(shù)間用 ","隔開 比如<T,K>

  1. 泛型類(泛型接口)

    泛型類中的泛型的使用區(qū)間是在整個(gè)類中, 而泛型方法是在整個(gè)方法中使用. 并且子類繼承這個(gè)泛型類,子類也可以使用此泛型(泛型接口同理)

c#
    

 public class GenericDemo<T>
    {
        public T PrintValue { get; set; }
        public void Print()
        {
            Console.WriteLine(PrintValue);
        }
    }

    public class GenericDemoChild<T> : GenericDemo<T>
    {
        public void PrintChild()
        {
            Console.WriteLine("Chlid" + PrintValue.ToString());
        }
    }
Java
public class Main {
    
    public static void main(String[] args) {
        var generic = new GenericDemo<String>();
        generic.PrintValue = "Hello World";
        generic.Print();
        var genericChild = new GenericDemoChild<Integer>();
        genericChild.PrintValue = 123;
        genericChild.ChildPrint();
    }
}
 public class GenericDemo<T> {
     
    public T PrintValue;

    public void Print(  ){
        System.out.println(PrintValue);
    }
}
public class GenericDemoChild<T> extends  GenericDemo<T> {
    
    public void ChildPrint(){
        System.out.println(PrintValue);
    }
}

C#與Java泛型的的不同之處

c#:

? c#中有泛型約束,限制泛型的條件;比如限制泛型的父類必須時(shí)某某類型,現(xiàn)在泛型必須有構(gòu)造函數(shù),必須實(shí)現(xiàn)的接口;

public class Generic<T> where T : class , new(){}

where T 后面加上針對 泛型T 約束的條件

class :約束T必須時(shí)引用類型;

struct : 約束T必須時(shí)值類型;

new() : 必須有無參構(gòu)造函數(shù)(若是有其他約束條件 new()必須放在最后一個(gè)約束條件);

一個(gè)具體類名: 必須繼承自此類;

一個(gè)接口名: 必須實(shí)現(xiàn)此接口.

java:

? 通配符 ? 表示泛型中可以任意的類型

    public static void main(String[] args) {

        List<String> stringlist = new ArrayList<>();
        stringlist.add("hel");
        stringlist.add("11");
        Print(stringlist);
        List<Integer> intList = new ArrayList<>();
        intList.add(11);
        intList.add(22);
        Print(intList);
    }
    public static void Print(List<?> list){
        System.out.println(list);
    }

上面的例子可以正確輸出.

在通配符?后面加上 super(下) class類名 或者 extends(上) class類名 表示通配符的上下限

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市囱挑,隨后出現(xiàn)的幾起案子醉顽,更是在濱河造成了極大的恐慌,老刑警劉巖平挑,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件游添,死亡現(xiàn)場離奇詭異,居然都是意外死亡弹惦,警方通過查閱死者的電腦和手機(jī)否淤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棠隐,“玉大人石抡,你說我怎么就攤上這事≈螅” “怎么了啰扛?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗡贺。 經(jīng)常有香客問我隐解,道長,這世上最難降的妖魔是什么诫睬? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任煞茫,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘续徽。我一直安慰自己蚓曼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布钦扭。 她就那樣靜靜地躺著纫版,像睡著了一般。 火紅的嫁衣襯著肌膚如雪客情。 梳的紋絲不亂的頭發(fā)上其弊,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音膀斋,去河邊找鬼梭伐。 笑死,一個(gè)胖子當(dāng)著我的面吹牛概页,可吹牛的內(nèi)容都是我干的籽御。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼惰匙,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了铃将?” 一聲冷哼從身側(cè)響起项鬼,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎劲阎,沒想到半個(gè)月后绘盟,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡悯仙,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年龄毡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锡垄。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡沦零,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出货岭,到底是詐尸還是另有隱情路操,我是刑警寧澤,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布千贯,位于F島的核電站屯仗,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏搔谴。R本人自食惡果不足惜魁袜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧峰弹,春花似錦店量、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粟按,卻和暖如春诬滩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背灭将。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工疼鸟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人庙曙。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓空镜,卻偏偏與公主長得像,于是被迫代替她去往敵國和親捌朴。 傳聞我的和親對象是個(gè)殘疾皇子吴攒,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容