一篇文章带你搞定 Java 中的泛型接口
一、定义泛型接口
在 JDK 1.5 之后,不仅可以声明泛型类,也可以声明泛型接口,声明泛型接口和声明泛型类的语法类似,也是在接口名称后面加上<T>:
[访问权限] interface 接口名称<泛型标识>{ }
interface Info<T>{ //在接口上定义泛型 public T getVar(); }
二、泛型接口的两种实现方式
泛型接口定义完成之后,就要定义接口的子类,定义泛型接口的子类有两种方式,一种是直接在子类后声明泛型,另一种是直接在子类实现的接口中明确地给出泛型类型。
- 在子类的定义上声明泛型类型
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()); } }
- 直接在接口中指定具体类型
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()); } }
此时程序中不需要在实例化子类对象时指定泛型,因为在声明子类时已经明确地指定了具体类型
上一篇:
IDEA上Java项目控制台中文乱码