关键词搜索

源码搜索 ×
×

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

发布2020-01-27浏览998次

详情内容

一、定义泛型接口

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

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

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

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

    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());
        }
    }
    
      3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    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());
        }
    }
    
      3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

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

    相关技术文章

    点击QQ咨询
    开通会员
    返回顶部
    ×
    微信扫码支付
    微信扫码支付
    确定支付下载
    请使用微信描二维码支付
    ×

    提示信息

    ×

    选择支付方式

    • 微信支付
    • 支付宝付款
    确定支付下载