Java泛型的理解和用法
Java泛型的理解和用法
YH_猿员猿 发表于2年前
Java泛型的理解和用法
  • 发表于 2年前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

泛型的由来:

    在java开发中,泛型和集合框架结合起来创建对象会比较的常用。泛型是指参数化类型的能力,它可以定义类,方法,接口等。随后在编译的过程中,由编译器自动的转换成具体的类型替换它。
    之所以使用泛型是因为早期的泛型是Object来使用得,但是在实际的使用时,在类型的转换上存在隐患。比如我们定义了一个Object,实例的时候将它转换成String,但是在接收的时候我们又接受为int型,这样在程序的代码片中是不会报错的,但是在执行的过程中就会报错。所以java提供泛型来解决安全问题。

泛型的使用:
1.定义泛型类

public class Toll<E>{

    }

2.定义泛型类中泛型方法

public class Toll<E>{

        private E e;

        public E getE(){
            return e;
        }

        public void setE(E e){
            this.e = e;
        }
    }

这里的泛型类中的泛型必须和类定义的泛型保持一致,如果不一致则需要在方法中定义自己泛型

        public<T> void show(T t){
            System.out.println(t);
        }

3.泛型接口的使用

    interface Inter<T>{
        public void show(T t);
    }

4.泛型通配符?

  1. 非受限统配类型 ?表示任何一种对象类型 ,等价于? extends Object。
  2. 受限通配类型 ? extends T ,表示T或T的一个未知子类型。
  3. 下限通配 ?super T,表示T或T的一个父类型。

利用泛型自定义栈

/** 1. 2. @author hp 3. 创建一个空栈 4. @param <E> */
public class GenericStack<E> {
    private ArrayList<E> list = new ArrayList<>();
    public GenericStack() {
    }
    /* * 栈的元素个数 */
    public int getSize(){
        return list.size();
    }
    /* * 返回栈顶元素 */
    public E peek(){
        return list.get(getSize()-1);
    }
    /* * 向栈的顶端添加一个元素 */
    public void push(E o){
        list.add(o);
    }
    /* * 弹出栈顶元素并删除这个元素 */
    public E pop(){
        E o = list.get(getSize()-1);
        list.remove(getSize()-1);
        return o;
    }
    public boolean isEmpty(){
        return list.isEmpty();
    }
}

注:!!!

  1. 泛型不能使用new E(),不能使用泛型类型参数创建对象。
  2. 不能使用new E[],不能使用泛型创建数组
  3. 在静态方法中不允许类的参数是泛型类型
  4. 异常类不能是泛型
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 12
码字总数 0
×
YH_猿员猿
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: