<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    無線&移動互聯網技術研發

    換位思考·····
    posts - 19, comments - 53, trackbacks - 0, articles - 283
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    關于泛型

    Posted on 2009-07-12 12:13 Gavin.lee 閱讀(229) 評論(0)  編輯  收藏 所屬分類: 類的設計

    import ?java.util.ArrayList;
    import ?java.util.List;

    class ?Fan? {
    ????
    private ?String?name;

    ????
    public ? void ?setName(String?name)? {
    ????????
    this .name? = ?name;
    ????}


    ????
    public ?String?getName()? {
    ????????
    return ?name;
    ????}

    }


    public ? class ?FanTest? {
    ????
    public ? static ? void ?main(String[]?args)? {
    ????????
    // ?/用泛型的效果--list的get方法取出來的對象不需要強制轉換
    ????????Fan?fan1? = ? new ?Fan();
    ????????fan1.setName(
    " fanTest1 " );
    ????????Fan?fan2?
    = ? new ?Fan();
    ????????fan2.setName(
    " fanTest2 " );

    ????????List
    < Fan > ?list? = ? new ?ArrayList();
    ????????list.add(fan1);
    ????????list.add(fan2);

    ????????System.out.println(list.get(
    0 ).getName());
    ????????System.out.println(list.get(
    1 ).getName());

    ????????
    // ?/不用泛型的效果--list的get方法取出來的對象需要強制轉換
    ????????List?no_list? = ? new ?ArrayList();
    ????????no_list.add(fan1);
    ????????no_list.add(fan2);

    ????????System.out.println(((Fan)?list.get(
    0 )).getName());
    ????????System.out.println(((Fan)?list.get(
    1 )).getName());

    ????}

    }

    首先給一個我在CSDN里查到的我們常用的例子,這個基本上天天都會用,但是從來沒仔細的考慮過中間的含義,慚愧。

    規則和限制
      1、泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型。
      2、同一種泛型可以對應多個版本(因為參數類型是不確定的),不同版本的泛型類實例是不兼容的。
      3、泛型的類型參數可以有多個。
      4、泛型的參數類型可以使用extends語句,例如<T extends superclass>。習慣上稱為“有界類型”。
      5、泛型的參數類型還可以是通配符類型。例如Class<?> classType = Class.forName(java.lang.String);


    package ?com.Gavin.fanxing;

    public ? class ?GenDemo? {
    ????
    public ? static ? void ?main(String[]?args)? {
    ????????
    // ?定義泛型類Gen的一個Integer版本
    ????????Gen < Integer > ?intOb? = ? new ?Gen < Integer > ( 88 );
    ????????intOb.showTyep();
    ????????
    int ?i? = ?intOb.getOb();
    ????????System.out.println(
    " value=? " ? + ?i);
    ????????System.out.println(
    " ---------------------------------- " );
    ????????
    // ?定義泛型類Gen的一個String版本
    ????????Gen < String > ?strOb? = ? new ?Gen < String > ( " Hello?Gen! " );
    ????????strOb.showTyep();
    ????????String?s?
    = ?strOb.getOb();
    ????????System.out.println(
    " value=? " ? + ?s);
    ????}

    }


    class ?Gen < T > ? {
    ????
    private ?T?ob;? // ?定義泛型成員變量

    ????
    public ?Gen(T?ob)? {
    ????????
    this .ob? = ?ob;
    ????}


    ????
    public ?T?getOb()? {
    ????????
    return ?ob;
    ????}


    ????
    public ? void ?setOb(T?ob)? {
    ????????
    this .ob? = ?ob;
    ????}


    ????
    public ? void ?showTyep()? {
    ????????System.out.println(
    " T的實際類型是:? " ? + ?ob.getClass().getName());
    ????}

    }


    package ?com.Gavin.fanxing;

    class ?Gen2? {
    ????
    private ?Object?ob;? // ?定義一個通用類型成員

    ????
    public ?Gen2(Object?ob)? {
    ????????
    this .ob? = ?ob;
    ????}


    ????
    public ?Object?getOb()? {
    ????????
    return ?ob;
    ????}


    ????
    public ? void ?setOb(Object?ob)? {
    ????????
    this .ob? = ?ob;
    ????}


    ????
    public ? void ?showTyep()? {
    ????????System.out.println(
    " T的實際類型是:? " ? + ?ob.getClass().getName());
    ????}

    }


    public ? class ?NoGenDemo? {
    ????
    public ? static ? void ?main(String[]?args)? {
    ????????
    // ?定義類Gen2的一個Integer版本
    ????????Gen2?intOb? = ? new ?Gen2( new ?Integer( 88 ));
    ????????intOb.showTyep();
    ????????
    int ?i? = ?(Integer)?intOb.getOb();
    ????????System.out.println(
    " value=? " ? + ?i);
    ????????System.out.println(
    " ---------------------------------- " );
    ????????
    // ?定義類Gen2的一個String版本
    ????????Gen2?strOb? = ? new ?Gen2( " Hello?Gen! " );
    ????????strOb.showTyep();
    ????????String?s?
    = ?(String)?strOb.getOb();
    ????????System.out.println(
    " value=? " ? + ?s);
    ????}

    }


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 丝瓜app免费下载网址进入ios| 中文字幕亚洲精品无码| 亚洲精品国产va在线观看蜜芽| 国产黄色一级毛片亚洲黄片大全| 亚洲动漫精品无码av天堂| 亚洲综合久久成人69| 免费精品久久久久久中文字幕| 黄色片免费在线观看| 国产男女猛烈无遮挡免费视频| 亚洲中文字幕第一页在线| 亚洲精品无码专区| 国产精品无码永久免费888| av免费不卡国产观看| xvideos亚洲永久网址| 亚洲三级视频在线观看| www一区二区www免费| 亚洲色偷拍另类无码专区| 亚洲男同gay片| 亚洲av午夜成人片精品电影| 亚洲黄页网在线观看| 国产精品二区三区免费播放心| 最好2018中文免费视频| 亚洲国产成人片在线观看| 99免费在线观看视频| 亚洲熟伦熟女新五十路熟妇 | 亚洲制服丝袜第一页| av永久免费网站在线观看| 免费网站看v片在线香蕉| 蜜芽亚洲av无码精品色午夜| 中文字幕免费播放| 亚洲精品国产成人| 成人免费视频国产| 亚洲精品精华液一区二区| 在线成人爽a毛片免费软件| 久久精品国产亚洲7777| 免费人成网上在线观看| 久久国产精品亚洲一区二区| 最近中文字幕大全免费版在线 | 大地资源在线资源免费观看| 亚洲成年人免费网站| 999国内精品永久免费视频|