gpt4 book ai didi

多个java泛型示例分享

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章多个java泛型示例分享由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1.泛型类 。

1.1普通泛型 。

  。

复制代码代码如下:

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);
    }
}

  。

输出结果:

  。

复制代码代码如下:

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

  。

1.2 K/V泛型 。

  。

复制代码代码如下:

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"));     } } 。

  。

输出结果:

  。

复制代码代码如下:

jianing
24

  。

2.泛型接口 。

  。

复制代码代码如下:

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

  。

输出结果:

  。

复制代码代码如下:

1
hello word

  。

3.泛型方法 。

  。

复制代码代码如下:

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);     } } 。

  。

输出结果:

  。

复制代码代码如下:

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

  。

4.限制泛型 。

在上面的例子中,没有限制class Test<T>类型持有者T的范围,默认限定类型相当于Object。比如我们要限制T为数字接口类型。只需要这么做:class Test<T extends Number>,这样类中的泛型T只能是Number接口的实现类,传入非Number接口编译会出错.

5.通配泛型 。

  。

复制代码代码如下:

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());         }     } } 。

  。

输出结果:

  。

复制代码代码如下:

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

  。

简单的例子:针对1.1的例子 。

  。

复制代码代码如下:

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());
    }

  。

输出结果:

  。

复制代码代码如下:

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

  。

6.补充 。

在泛型中,可能会遇到<T><E>等,T和E分别是Type和Element的首字母。E一般用来表示集合类型中的元素的类型,例如List接口的定义,public interface List<E> extends Collection<E>。这只是一种命名习惯,两者没有本质区别.

最后此篇关于多个java泛型示例分享的文章就讲到这里了,如果你想了解更多关于多个java泛型示例分享的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com