java的泛型

发布时间 2023-06-05 14:41:49作者: 踏浪而来的人

泛型:

  表示数据类型(这种数据类型是引用类型)的一种类型。如int a = 1;变量a为1。类比得 E = String,E表示泛型,他可以表示所有的数据类型,这里这个泛型表示String类型

  1. 泛型又称参数化类型,解决数据类型的安全性问题

  2. 在类声明或实例化时指定好需要的类型即可(即传入实参)

  3. 泛型的作用:可以在类声明时通过一个标识表示类中的某个属性类型,或某个方法的返回值类型,或参数类型

public class Generic{
    public static void main(String[] args){
        //注意:E的具体类型是在编译期间确定的,这里泛型E的类型表示Srting类型
        Person<String> person = new Person<String>("zhangsan");
    }
}

class Person<E>{
    E s; //某个属性类型
    public Person(E s){//参数类型
        this.s = s;
    }
    public E f(){//某个方法的返回值类型
        return s;
    }    
    void show(){
        System.out.println(s.getclass());//这个看E的实际类型(运行类型)
    }
}

泛型的声明:

  class 类名<E,K,M>{}和interface 接口名<T,V>{}

    E,K,M,T,V表示泛型,只能表示引用类型,任意字母都行。一般在一个对象实例化就能指定泛型表示的具体类型了

    在指定泛型的具体类型后,可以传入该类型或该类型的子类型

泛型的使用形式:

  Person<String> person = new Person<String>("zhangsan");

  也可以为:Person<String> person = new Person<>("zhangsan");后面的<>中的类型会自动推导,推荐使用第二种