一、定义泛型接口
在 JDK 1.5 之后,不仅可以声明泛型类,也可以声明泛型接口,声明泛型接口和声明泛型类的语法类似,也是在接口名称后面加上<T>
:
[访问权限] interface 接口名称<泛型标识>{
}
interface Info<T>{//在接口上定义泛型
public T getVar();
}
- 3
二、泛型接口的两种实现方式
泛型接口定义完成之后,就要定义接口的子类,定义泛型接口的子类有两种方式,一种是直接在子类后声明泛型,另一种是直接在子类实现的接口中明确地给出泛型类型。
- 在子类的定义上声明泛型类型
interface Info<T>{//在接口上定义泛型
public T getVar();
}
class InfoTemp<T> implements Info<T>{//定义泛型接口的子类
private T var;
public InfoTemp(T var){//通过构造方法设置属性内容
this.setVar(var);
}
public void setVar(T var){
this.var = var;
}
public T getVar() {
return this.var;
}
}
public class Test{
public static void main(String[] args) {
Info<String> i = null;//定义接口对象
i = new InfoTemp<String>("Java");//通过子类实例化此对象
System.out.println("内容:" + i.getVar());
}
}
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 直接在接口中指定具体类型
interface Info<T>{//在接口上定义泛型
public T getVar();
}
class InfoTemp implements Info<String>{//定义泛型接口的子类,指定类型为 String
private String var;
public InfoTemp(String var){//通过构造方法设置属性内容
this.setVar(var);
}
public void setVar(String var){
this.var = var;
}
public String getVar() {
return this.var;
}
}
public class Test{
public static void main(String[] args) {
Info<String> i = null;//定义接口对象
i = new InfoTemp("Java");//通过子类实例化此对象
System.out.println("内容:" + i.getVar());
}
}
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
此时程序中不需要在实例化子类对象时指定泛型,因为在声明子类时已经明确地指定了具体类型