欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

泛型

程序员文章站 2022-07-11 08:53:29
如果不使用泛型,把一个对象添加到集合中,会被存储为Object型;取出来也是Object型,往往需要强制类型转换。 泛型,即参数化类型(parameterized type)。 使用泛型后,集合中只能存储该类型的对象,存储为该类型,取出来也是该类型。 Java7之前: Java7的菱形语法: Jav ......

为什么要使用泛型?

可以使集合内只添加指定类型,从而保证了类型安全。

 

Java中泛型只在编译阶段有效,即泛型信息不回机内到运行时阶段。

 

泛型类

  1. 对象实例化时不指定泛型,默认为:Object
  2. 泛型不同引用之间不能相互赋值

class A<T>{

     private T key;

     public void setKey(T key){

         this.key=key;

     }

     public T getKey(){

         return key;

     }

}

 

A<String> temp = new A<String>();

Temp.setKey(“12asd”);

 

泛型接口

定义泛型接口

interface A<T>{

    T test(T t);

}

 

实现泛型接口

  1. 未传入泛型实参时,与泛型类的定义相同,在声明类时需要将泛型的声明也一起加到类中。

class B1<T> implements A<T>{

    public T test(T t){

        return t;

    }

}

 

  1. 如果实现接口时,指定了接口的泛型的具体数据类型,这个类实现接口的所有方法的位置都要将泛型替换成实际的具体数据类型。

class B2 implements A<String>{

    public Strring test(String t){

        return null;

    }

}

在引用未传入泛型实参的类时,可添加不同泛型数据类型

B1<Object> b1 = new B1<Object>();

B1<String> b1 = new B1<String>();

B1<Integer> b1 = new B1<Integer>();

 

在引用传入泛型实参的类时,其泛型被规定。

B2 b2 = new B2();

 

泛型方法

泛型方法,在调用之前没有固定的数据类型,会在调用时,确定泛型的具体数据类型

class C{

    //无返回值的泛型方法

    public <T> void test(T s){

        T t = s;

    }

    //有返回值的泛型方法

    public <T> T test1(T s){

        return s;

     }

     //可变参数的泛型方法

     public <T> test2(T… strs){

         for(T s : strs){

        System.out.println(s);

        }

     }

}

 

本文地址:https://blog.csdn.net/qq_37915248/article/details/107898960

相关标签: Java自学