一篇文章带你搞定 Java 中的泛型接口

一、定义泛型接口

在 JDK 1.5 之后,不仅可以声明泛型类,也可以声明泛型接口,声明泛型接口和声明泛型类的语法类似,也是在接口名称后面加上<T>:

[访问权限] interface 接口名称<泛型标识>{
          
   
}
interface Info<T>{
          
   //在接口上定义泛型
	public T getVar();
}

二、泛型接口的两种实现方式

泛型接口定义完成之后,就要定义接口的子类,定义泛型接口的子类有两种方式,一种是直接在子类后声明泛型,另一种是直接在子类实现的接口中明确地给出泛型类型。

  1. 在子类的定义上声明泛型类型
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());
    }
}
  1. 直接在接口中指定具体类型
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());
    }
}

此时程序中不需要在实例化子类对象时指定泛型,因为在声明子类时已经明确地指定了具体类型

经验分享 程序员 微信小程序 职场和发展