泛型一直以来都是一个比较难以讲解清楚的知识点,
本篇帖子旨在能够让初学者一次听懂泛型,理解泛型
包装箱大家都见过吧?
包装箱
这是一个生产出来的包装箱,但是箱子里将来要装什么,没有人知道,我们只知道这个箱子里将来要装东西
那么,当我们使用箱子装东西的时候,要往箱子上贴上标签,这样我们就知道箱子里装的是什么东西,将来取出来的时候也一定是该物品(杠精不要抬杠说标签会贴错)
箱子上贴了手机的标签例如,箱子上贴上手机的标签
这样的话,箱子里装的一定是手机,将来取出来也一定是手机
箱子上贴了驴的标签现在给箱子贴上驴的标签
那么箱子里装的一定是驴,将来取出来的也一定是驴
不要怀疑,我这个箱子什么都能装进去
好了,这就是生活中的泛型
那么在代码中怎么使用泛型类呢?
泛型类的定义
/**
* 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();
好了,泛型类的思想讲完了。
代码不多,思想是关键。
帖子不长,一定要仔细看。
网友评论