Java高级知识复盘之泛型
泛型类
- 泛型符号 出现 类的声明处 <>
- 在本类中 当作已知类型 来用
- 静态方法不能出现 类的泛型符号
// 泛型符号,个数不要求,名称不要求,T-type E-element K-key V-value ;
public class Student<A, B, C> {
private A a;
private B b;
private C c;
/**
* 静态方法不能出现 类的泛型符号
* @param a
*/
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
public C getC() {
return c;
}
public void setC(C c) {
this.c = c;
}
}
泛型接口
泛型符号,出现在接口声明处为泛型接口
接口定义
public interface Inter<A, B> {
//本接口中 当成已知类型来用
A methodA(A a);
B methodB(B b);
}
1,实现类直接确定类型
//1, 在实现类中 直接确定类型
public class InterImpl1 implements Inter<String, Integer> {
@Override
public String methodA(String s) {
return null;
}
@Override
public Integer methodB(Integer integer) {
return null;
}
}
2,实现类中泛型符号如果不指定类型,则默认当成Object
//2, 实现类中泛型符号如果不指定类型则当成Object
public class InterImpl2 implements Inter {
@Override
public Object methodA(Object o) {
return null;
}
@Override
public Object methodB(Object o) {
return null;
}
}
3,实现类带上泛型符号,等到创建对象的时候确定
public class InterImpl3<A, B, C> implements Inter<A, B> {
private A a;
private C c;
public void run(A a) {
}
@Override
public A methodA(A a) {
return null;
}
@Override
public B methodB(B b) {
return null;
}
}
泛型方法
在进行方法调用的时候,根据实参确定泛型的类型
泛型符号,在本方法中,当成已知类型来用
泛型上下限
- ? 表示通配符 可以是任意引用类型
- ? extends Animal 泛型的上限:可以是Animal类型或Animal的子类型
- ? super Animal : 泛型的下限:可以是Animal 或 Animal的父类型