美文网首页
泛型总结

泛型总结

作者: 疯狂的冰块 | 来源:发表于2017-08-01 13:40 被阅读13次

泛型类定义的泛型,在整个类中有效。
如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固定了。

为了让不同的方法可以限定不同类型。那么 可以将泛型定义在方法上。

泛型类

class Demo<T>
{
    public void show(T t) {
        System.out.println("show: "+t);
    }
    public void print(T t) {
        System.out.println("show: "+t);
    }
}

class GenericDemo4 {
    public static void main(String[] args) {
        Demo<Integer>d = new Demo<Integer>();
        d.show(new Integer(4));
        Demo<String>d1 = new Demo<String>();
        d1.print("haha");
    }
}

结果:
show: 4
show: haha

泛型方法

class Demo{
    public <T> void show(T t){
        System.out.println("show: "+t);
    }
    public <Q> void print(Q q)
    {
        System.out.println("print:"+q);
    }
}

class GenericDemo4
{
    public static void main(String[] args)
    {
        Demo d = new Demo();
        d.show("hello boy!");
        d.print("Alex i love you !");
    }
}

结果:
show: hello boy!
print:Alex i love you !

同时定义泛型类和泛型方法

class Demo<T>
{
    public void show(T t)
    {
        System.out.println("show: "+t);
    }
    public <Q> void print(Q q)
    {
        System.out.println("print:"+q);
    }
}
class GenericDemo4
{
    public static void main(String[] args)
    {
        Demo <String> d = new Demo<String>();
        d.show("hello boy!");
        d.print("Alex i love you !");
        d.print(5);
        d.print("heiei");

    }
}

结果:
show: hello boy!
print:Alex i love you !
print:5
print:heiei

特殊之处:
静态方法不可以访问类上定义的泛型
如果静态方法操作的应用数据类型不确定或者它和类上定义的泛型不同,可以将泛型定义在方法上。

class Demo<T> {
    public void show(T t) {
        System.out.println("show: "+t);
    }
    public <Q> void print(Q q)  {
        System.out.println("print:"+q);
    }

    public static <W>void method(W t) {
        System.out.println("method: "+t);
    }
}


class GenericDemo4{
    public static void main(String[] args) {
        Demo <String> d = new Demo<String>();
        d.show("hello boy!");
        d.print("Alex i love you !");

        d.print(5);
        d.print("heiei");
        Demo.method("hihi");
    }
}

结果:
show: hello boy!
print:Alex i love you !
print:5
print:heiei
method: hihi

泛型定义在接口上

interface Inter<T> {
    void show(T t);
}

//第一种
class InterImpl implements Inter<String> {   
    public void show(String t) {
        System.out.println("show :"+t);
    }
}

/*第二种
class InterImpl<T>implements Inter<T> {
    public void show(T t) {
        System.out.println("show :"+t);
    }
}
*/
class GenericDemo5
{
    public static void main(String[] args)
    {
        /*  
        InterImpl<Integer> i = new InterImpl<Integer>();
        i.show(4);
        */
        InterImpl i = new InterImpl();
        i.show("haha");

    }
}

结果:
show :haha

第一种相对来说就比较死,固定为String类型了。而第二种可以自己定义。
下面分享两篇讲泛型的文章,这两篇文章讲的深入浅出,基本能覆盖的也都覆盖了。感谢原作者!!

java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题

Java中的逆变与协变

相关文章

  • Java泛型

    参考:Java知识点总结(Java泛型) 自定义泛型类 自定义泛型接口 非泛型类中定义泛型方法 继承泛型类 通配符...

  • Java泛型总结

    Java泛型总结# 泛型是什么## 从本质上讲,泛型就是参数化类型。泛型十分重要,使用该特性可以创建类、接口以及方...

  • Java笔记---泛型

    总结了泛型的基本语法、上下级通配符、泛型反射以及使用泛型的一些实践,看完还不会用泛型你顺着网线来打我(狗头)。 我...

  • 泛型总结

    泛型类定义的泛型,在整个类中有效。如果被方法使用,那么泛型类的对象明确要操作的具体类型后,所有要操作的类型就已经固...

  • swift 泛型

    Swift-泛型学习和实例总结 - Mazy's Blog - CSDN博客 Swift中的泛型 - 简书

  • java泛型

    本质:类型参数化 java总结——泛型

  • Java 泛型

    java 泛型 很多朋友对java的泛型不是很理解,很多文章写的已不是很清楚,这篇博客对java泛型进行 一个总结...

  • JAVA基础容器4

    0、泛型 一、具体代码实现 三、总结

  • java 泛型

    很多朋友对Java的泛型不是很理解,很多文章写的已不是很清楚,这篇博客对java泛型进行 一个总结。 泛型的转换:...

  • java泛型的小技巧

    代码 总结3点 在方法的返回值前使用"<>"申明泛型,在参数中有用到泛型的地方,才可以使用这个泛型类型(当然...

网友评论

      本文标题:泛型总结

      本文链接:https://www.haomeiwen.com/subject/ejsjlxtx.html