最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

多個(gè)java泛型示例分享

 更新時(shí)間:2014年04月13日 11:41:49   作者:  
這篇文章主要介紹了多個(gè)java泛型示例,需要的朋友可以參考下

1.泛型類

1.1普通泛型

復(fù)制代碼 代碼如下:

package test.lujianing;
/**
 * 泛型類
 * @param <T>
 */
class Test<T>{
    private T obj;
    public void setValue(T obj){
        this.obj =obj;
    }
    public T getValue(){
        System.out.println(obj.getClass().getName());
        return obj;
    }
}
/**
 * 測試泛型類
 */
public class TestOne {
    public static void main(String[] args) {
        //測試Integer泛型
        Test<Integer> t1 = new Test<Integer>();
        t1.setValue(5);
        Integer i = t1.getValue();
        System.out.println(i);
        //測試Double泛型
        Test<Double> t2 = new Test<Double>();
        t2.setValue(5.55D);
        Double d = t2.getValue();
        System.out.println(d);
        //測試String泛型
        Test<String> t3 = new Test<String>();
        t3.setValue("hello world");
        String str =t3.getValue();
        System.out.println(str);
    }
}

輸出結(jié)果:

復(fù)制代碼 代碼如下:

java.lang.Integer
5
java.lang.Double
5.55
java.lang.String
hello world

1.2 K/V泛型

復(fù)制代碼 代碼如下:

package test.lujianing;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by Administrator on 14-3-30.
 */
class TestKV<K,V>{
    private Map<K,V> map=new HashMap<K, V>();
    public void put(K k, V v) {
        map.put(k,v);
    }
    public V get(K k) {
        return map.get(k);
    }
}
public class TestFour{
    public static void main(String[] args) {
        TestKV<String,String> t = new TestKV<String, String>();
        t.put("name","jianing");
        System.out.println(t.get("name"));

        TestKV<String,Integer> t2 = new TestKV<String, Integer>();
        t2.put("age",24);
        System.out.println(t2.get("age"));
    }
}

輸出結(jié)果:

復(fù)制代碼 代碼如下:

jianing
24

2.泛型接口

復(fù)制代碼 代碼如下:

package test.lujianing;
/**
 * 泛型接口
 * @param <T>
 */
public interface TestImpl<T> {
    public void setValue(T t);
    public T getValue();
}

輸出結(jié)果:

復(fù)制代碼 代碼如下:

1
hello word

3.泛型方法

復(fù)制代碼 代碼如下:

package test.lujianing;

/**
 * 泛型方法類
 */
class TestMethod{
    /**
     * 泛型方法
     */
    public <T>T getValue(Object s,Class<T> clazz) {
        System.out.println(clazz.getName());
        T t =null;
        if(clazz.getName().equals("java.lang.Integer")){
            Double d = Double.parseDouble(s.toString());
            int i =d.intValue();
            t=(T)new Integer(i);
        }
        if(clazz.getName().equals("java.lang.Double")){
            t=(T)new Double(s.toString());
        }
        return t;
    }
}

/**
 * 泛型方法測試類
 */
public class TestThree {
    public static void main(String[] args) {
        TestMethod t = new TestMethod();
        int i =t.getValue("30.0011",Integer.class);
        System.out.println(i);
        double d  =t.getValue("40.0022",Double.class);
        System.out.println(d);
    }
}

輸出結(jié)果:

復(fù)制代碼 代碼如下:

java.lang.Integer
30
java.lang.Double
40.0022

4.限制泛型

在上面的例子中,沒有限制class Test<T>類型持有者T的范圍,默認(rèn)限定類型相當(dāng)于Object。比如我們要限制T為數(shù)字接口類型。只需要這么做:class Test<T extends Number>,這樣類中的泛型T只能是Number接口的實(shí)現(xiàn)類,傳入非Number接口編譯會(huì)出錯(cuò)。

5.通配泛型

復(fù)制代碼 代碼如下:

package test.lujianing;
import java.util.HashMap;
import java.util.Map;
/**
 * 通配泛型
 */
public class TestFive {
    public static void main(String[] args) {
        Map<String,Class<? extends Number>> map = new HashMap<String,Class<? extends Number>>();
        map.put("Integer",Integer.class);
        map.put("Double",Double.class);

        for (Map.Entry<String,Class<? extends Number>> entry : map.entrySet()) {
            System.out.println("key:" + entry.getKey() + " value:" + entry.getValue());
        }
    }
}

輸出結(jié)果:

復(fù)制代碼 代碼如下:

key:Double value:class java.lang.Double
key:Integer value:class java.lang.Integer

簡單的例子:針對(duì)1.1的例子

復(fù)制代碼 代碼如下:

public static void main(String[] args) {
        //測試Integer泛型
        Test<Integer> t1 = new Test<Integer>();
        t1.setValue(5);
        fun(t1);
        //測試Double泛型
        Test<Double> t2 = new Test<Double>();
        t2.setValue(5.55D);
        fun(t2);
    }
    public static void fun(Test<?> t){
        System.out.println("通配泛型"+t.getValue());
    }

輸出結(jié)果:

復(fù)制代碼 代碼如下:

java.lang.Integer
通配泛型5
java.lang.Double
通配泛型5.55

6.補(bǔ)充

在泛型中,可能會(huì)遇到<T><E>等,T和E分別是Type和Element的首字母。E一般用來表示集合類型中的元素的類型,例如List接口的定義,public interface List<E> extends Collection<E>。這只是一種命名習(xí)慣,兩者沒有本質(zhì)區(qū)別。

相關(guān)文章

  • java后端請(qǐng)求過濾options方式

    java后端請(qǐng)求過濾options方式

    Optional項(xiàng)是一個(gè)容器對(duì)象,它可以包含非空值,也可以不包含非空值,它用于表示沒有值,而不是使用?null,引入Optional項(xiàng)是為了幫助開發(fā)人員編寫更簡潔、更具表現(xiàn)力的代碼,并避免?NullPointerException
    2024-01-01
  • Java語言中&&與& ||與|的區(qū)別是什么

    Java語言中&&與& ||與|的區(qū)別是什么

    這篇文章主要介紹了Java語言中&&與& ||與|的區(qū)別是什么的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • 實(shí)例詳解SpringMVC入門使用

    實(shí)例詳解SpringMVC入門使用

    大家好,本篇文章主要講的是實(shí)例詳解SpringMVC入門使用,感興趣的同學(xué)趕快來看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Java使用dom4j解析XML

    Java使用dom4j解析XML

    dom4j是一個(gè)開源的、基于Java的XML解析庫,而在Java中使用dom4j庫解析XML是一種常見的方法,下面就跟隨小編一起來學(xué)習(xí)一下Java如何使用dom4j解析XML吧
    2024-12-12
  • JAVA中數(shù)組插入與刪除指定元素的實(shí)例代碼

    JAVA中數(shù)組插入與刪除指定元素的實(shí)例代碼

    下面小編就為大家分享一篇JAVA中數(shù)組插入與刪除指定元素的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Spring+SpringMVC+Hibernate整合實(shí)例講解

    Spring+SpringMVC+Hibernate整合實(shí)例講解

    在本篇文章里小編給大家整理的是關(guān)于Spring+SpringMVC+Hibernate整合實(shí)例講解,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • java實(shí)現(xiàn)自定義日期選擇器的方法實(shí)例

    java實(shí)現(xiàn)自定義日期選擇器的方法實(shí)例

    日期選擇器是我們?nèi)粘i_發(fā)中經(jīng)常需要用到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于利用java實(shí)現(xiàn)自定義日期選擇器的相關(guān)資料,文中給出了詳細(xì)的示例代碼,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-10-10
  • SpringBoot封裝JDBC的實(shí)現(xiàn)步驟

    SpringBoot封裝JDBC的實(shí)現(xiàn)步驟

    本文主要介紹了SpringBoot封裝JDBC的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 淺析對(duì)Java關(guān)鍵字final和static的理解

    淺析對(duì)Java關(guān)鍵字final和static的理解

    本文主要給大家談?wù)勑【帉?duì)java關(guān)鍵字final和static的理解,本文給大家介紹的較詳細(xì),需要的朋友參考參考下
    2017-04-04
  • SpringBoot根據(jù)目錄結(jié)構(gòu)自動(dòng)生成路由前綴的實(shí)現(xiàn)代碼

    SpringBoot根據(jù)目錄結(jié)構(gòu)自動(dòng)生成路由前綴的實(shí)現(xiàn)代碼

    本文介紹如何根據(jù)目錄結(jié)構(gòu)給RequestMapping添加路由前綴,具體實(shí)現(xiàn)方法,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-08-08

最新評(píng)論

岳阳市| 大新县| 临沭县| 阜新| 清河县| 台山市| 上杭县| 津南区| 区。| 水城县| 汤原县| 英德市| 辽阳市| 光泽县| 宁夏| 遂川县| 自治县| 鹤壁市| 汝州市| 东源县| 资源县| 通许县| 滕州市| 永福县| 兴和县| 永春县| 多伦县| 隆昌县| 剑河县| 临安市| 永顺县| 罗江县| 宣化县| 巨鹿县| 容城县| 黎城县| 内黄县| 长顺县| 泸西县| 新丰县| 淮安市|