泛型

泛型矩阵类

在这里插入图片描述

泛型小结

⦁ 泛型具有参数化类型的能力。可以定义使用泛型类型的类或方法,编译器会用具体的类型来替换泛型类型。
⦁ 泛型的主要优势是能够在编译时而不是运行时检测错误。
⦁ 泛型或方法允许指定这个类或方法可以带有的对象类型。如果试图使用带有不兼容对象的类或方法,编译器会检测出这个错误。
⦁ 定义在类、接口或者静态方法中的泛型称为形式泛型类型,随后可以用一个实际具体类型来替换它。替换泛型类型的过程称为泛型实例化。
⦁ 不使用类型参数的泛型类称为原始类型,例如Arraylist。使用原始类型是为了向后兼容java较早的版本。
⦁ 通配泛型类型有三种形式:?、?Extends T 和 ?Super T,这里的T代表一个泛型类型。第一种形式?称为非受限通配,它和?Extends Object 是一样的。第二种形式?Extends T称为受限统配,代表T或者T的一个类型。第三种类型?Super T 称为下限通配,代表T或者T的一个父类型。
⦁ 使用称为类型消除的方法来实现泛型。编译器使用泛型类型信息来编译代码,但是随后消除它。因此泛型信息在运行时是不可用的。这个方法能够使泛型代码向后兼容使用原始类型的遗留代码。
⦁ 不能使用泛型类型参数来创建实例。
⦁ 不能使用泛型类型参数来创建数组。
⦁ 不能在静态环境中使用类的泛型类型参数
⦁ 在异常类中不能使用泛型类型参数

用数组实现泛型栈

public class GenericStack2<E> {
    public final static int INITIAL_SIZE = 16;
    private E[] elements;
    private int size;

    public GenericStack2(){
        this(INITIAL_SIZE);
    }

    public GenericStack2(int initialCapacity){
        elements = (E[])new Object[initialCapacity];
    }

    public E push(E value){
        if(size >= elements.length){
            E[] temp = (E[]) new Object[elements.length*2];
            System.arraycopy(elements,0,temp,0,elements.length);
            elements = temp;
        }
        return elements[size++] = value;
    }

    public E pop(){
        return elements[--size];
    }

    public E peek(){
        return elements[size-1];
    }
    public boolean isEmpty(){
        return size == 0;
    }
    public int getSize(){
        return size;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值