再重复一遍,使用哪个字母是没有特定意义的!只是为了提高可读性!!!!
3、泛型接口定义及使用
在接口上定义泛型与在类中定义泛型是一样的,代码如下:
interface Info{// 在接口上定义泛型public T getVar() ;// 定义抽象方法,抽象方法的返回值就是泛型类型publicvoid setVar(T x);}
与泛型类的定义一样,也是在接口名后加尖括号;
(1)、使用方法一:非泛型类
但是在使用的时候,就出现问题了,我们先看看下面这个使用方法:
class InfoImplimplements Info{// 定义泛型接口的子类private String var ;// 定义属性public InfoImpl(String var){// 通过构造方法设置属性内容this.setVar(var) ;}@Overridepublicvoid setVar(String var){this.var = var ;}@Overridepublic String getVar(){returnthis.var ;}}publicclass GenericsDemo24{publicvoid main(String arsg[]){InfoImpl i =new InfoImpl("harvic");System.out.println(i.getVar()) ;}};
首先,先看InfoImpl的定义:
class InfoImplimplements Info{}
要清楚的一点是InfoImpl不是一个泛型类!因为他类名后没有!
然后在在这里我们将Info中的泛型变量T定义填充为了String类型。所以在重写时setVar()和getVar()时,IDE会也我们直接生成String类型的重写函数。
最后在使用时,没什么难度,传进去String类型的字符串来构造InfoImpl实例,然后调用它的函数即可。
publicclass GenericsDemo24{publicvoid main(String arsg[]){InfoImpl i =new InfoImpl("harvic");System.out.println(i.getVar()) ;}};
(2)