挑战全网最简单java泛型类思想解释

2020-02-16  本文已影响0人  王魔王

泛型一直以来都是一个比较难以讲解清楚的知识点,
本篇帖子旨在能够让初学者一次听懂泛型,理解泛型

包装箱大家都见过吧?


包装箱

这是一个生产出来的包装箱,但是箱子里将来要装什么,没有人知道,我们只知道这个箱子里将来要装东西

那么,当我们使用箱子装东西的时候,要往箱子上贴上标签,这样我们就知道箱子里装的是什么东西,将来取出来的时候也一定是该物品(杠精不要抬杠说标签会贴错)

例如,箱子上贴上手机的标签

箱子上贴了手机的标签

这样的话,箱子里装的一定是手机,将来取出来也一定是手机

现在给箱子贴上驴的标签

箱子上贴了驴的标签

那么箱子里装的一定是驴,将来取出来的也一定是驴

不要怀疑,我这个箱子什么都能装进去

好了,这就是生活中的泛型

那么在代码中怎么使用泛型类呢?

泛型类的定义


/**
 * java中泛型类语法就是这样写的
 * 在类的后面跟上一个<E>
 * @param <E>
 */
public class Test<E> {
    private E element;//这个element就是箱子里的元素(东西),现在只是生产箱子,箱子里将来要装什么元素(东西),不清楚
                      //这个E将来是什么类型(东西),只能在将来贴上标签后才知道

    /**
     * 暴露get方法,获取箱子里的元素(东西)
     * @return
     */
    public E getElement() {
        return element;
    }
}

接下来,我们把需要往箱子里装的东西(类)定义好
定义手机类

/**
 * 手机类
 */
public class Mobile {
    /**
     * 打电话的方法
     */
    public void call(){
        Log.d("====", "call: 手机可以打电话");
    }
}

定义驴类

/**
 * 驴类
 */
public class Donkey {
    /**
     * 驴叫的方法
     */
    public void aoao(){
        Log.d("====", "aoao: 驴可以嗷嗷叫");
    }
}

现在开始使用箱子(给箱子贴上标签)

本次给箱子贴手机的标签,即把泛型声明为Mobile类

      //箱子上贴了手机的标签
       Test<Mobile> mobileTest =new Test<>();
      //箱子里获取出来的是手机
        Mobile element = mobileTest.getElement();
      //因为获取的出来的是手机,所以可以调用手机的打电话方法
        element.call();

本次给箱子贴驴的标签,即把泛型声明为Donkey类

        //箱子贴上了驴的标签
        Test<Donkey> donkeyTest=new Test<>();
      //箱子里获取出来的是驴
        Donkey element1 = donkeyTest.getElement();
        //可以调用驴叫的方法
        element1.aoao();

好了,泛型类的思想讲完了。
代码不多,思想是关键。
帖子不长,一定要仔细看。

上一篇 下一篇

猜你喜欢

热点阅读