概念
泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是安全简单。
泛型类
在类名的后面加上泛型申明代表该类中有一个泛型,<>中的大写字母代表类型可以使任意大写字母。泛型可以指代任意对象类型。我们亦可以有多个如:<T t,E,e>
例子:
泛型类:
package Java;
/**
* 泛型类
*/
public class Plant<T,E> {
T t;
E e;
public T getT() {
return t;
}
public void setT(T t) {
this.t = t;
}
public E getE() {
return e;
}
public void setE(E e) {
this.e = e;
}
void print(){
System.out.println("t的类型为:"+t.getClass().getName());
System.out.println("E的类型为:"+e.getClass().getName());
}
}
测试类:
package Java;
public class Test {
public static void main(String[] args) {
Plant<Integer,String> plant =new Plant<>();
plant.setT(1);
plant.setE("hello");
plant.print();
}
}
输出结果:
泛型接口
泛型接口与泛型类定义方法类似,但是不可以有具体的实现。只能在器子类中重写接口方法,在重写是我们可以指定泛型类型,也可以不指定。
泛型接口定义:
package Java;
public interface Person<T> {
T say();
}
不指定泛型类型:表示还没有传入泛型实参
package Java;
public class Student<T> implements Person<T>{
@Override
public T say() {
return null;
}
}
指定泛型类型:表示传入了泛型实参
package Java;
/**
* 指定泛型类型
*/
public class Student1 implements Person<String> {
@Override
public String say() {
String name = "张三";
return name;
}
}