Java 泛型 解析

71 阅读1分钟
  • 多态与泛型 List list = new ArrayList(); 这是不允许的 泛型变量声明的类型必须匹配传递给实际对象的类型

泛型作为方法的参数

public class GoodsSeller {
    public void selling(List<Goods> list) {
        for (Goods g :list) {
            g.sell();
        }
    }
    // 泛型作为方法参数可以使用 ? extend 父类 来传递此父类的子类的类型
    public void selling(List<? extends Goods> list) {
        for (Goods g :list) {
            g.sell();
        }
    }
}

泛型类

  • 类型参数化
public class NumG<T> {
    private T num;

    public T getNum() {
        return num;
    }

    public void setNum(T num) {
        this.num = num;
    }
}

// 两个泛型参数
public class NumGTwo<T, X> {
    private T num1;
    private X num2;

    public T getNum1() {
        return num1;
    }

    public void setNum1(T num1) {
        this.num1 = num1;
    }

    public X getNum2() {
        return num2;
    }

    public void setNum2(X num2) {
        this.num2 = num2;
    }
}

泛型方法

public class GenMethod {
    public <T> void printValue(T t){
        System.out.println(t);
    }

    public <R extends Number> void printNumValue(R t){
        System.out.println(t);
    }
}