66.泛型在接口中使用的格式;如何使用带有泛型的接口?

泛型在接口中使用的格式【重点】

接口

成员变量:缺省属性:public static final (所有变量都是静态不可继承变量)
成员方法: 缺省属性:public abstract (所有成员方法都是抽象方法)

泛型在接口种使用的格式

Interface 接口名<自定义泛型无意义英文单个字母大写占位符> {
自定义泛型有且只能成员方法使用;
}

接口中的成员变量不能使用自定义泛型

1.成员变量的缺省属性是public static final 定义时必须初始化,但是泛型初始化为什么没有具体的数据类型,无法进行初始化操作
2.成员变量static修饰,当前成员变量需要在加载阶段,明确所有内容【也就是静态成员变量必须初始化,但是泛型又偏偏不让你初始化】,但是当前情况下,数据类型不明确的;有悖于语法;所以成员变量不受接口泛型限制的原因还是因为静态

如何使用带有泛型的接口?

接口没有自己的类对象
<1>接口不是类;
<2>接口中存在未完成的方法,就算是有对象,也得报错;

带有泛型的接口是哦那个需要以来于实现类完成,这里有两种方式;
<1>自由模式;
<2>乖巧模式;

//带有自定义泛型的接口
interface MyTest<T> {
    //成员方法
    //缺省属性为 public abstract
    <T>T test1(T t);
    //接口名后面有<T> 所以方法返回值位置可以没有<T>
    //如果接口名后面没有<T>,方法返回值位置一定要有<T>
    T test2(T t);
}

//自由方式
//实现带有自定义泛型的接口
//可以实现的时候使用泛型<T>,但是要在创建对象的时候把具体的类型确认
class Member<T> implements MyTest<T>{
    //实现类使用和接口相同的泛型
    //泛型对应具体数据类型在创建当前类对象时明确;
    @Override
    public <T> T test1(T t1) {
        return t1;
    }
    @Override
    public T test2(T t) {
        System.out.println("未明确泛型具体数据类型操作方式,自由!");
        return t;
    }
}
//乖巧模式
//实现类在遵从带有自定义泛型的接口时,接口中泛型的具体数据类型已经确认
//实现类完成的对应方法就OK
//实现类的时候MyTest<> 后面的泛型里面赋值String
//所以在实现方法的时候 test2() 受到影响,参数类型直接变成String
//但是test1() 方法不受影响,因为他的返回值位置上有<T>,所以独立,不受类名和接口名后面的<T>影响
class Compan implements MyTest<String>{
    //不受影响,因为返回值位置有<T>,所以不受上一级类和接口的影响;独立的
    @Override
    public <T> T test1(T t1) {
        return t1;
    }
    @Override
    public String test2(String s) {
        return s;
    }

    public static void main(String[] args) {
        //自由模式,创建实现类对象的时候,直接给自由模式泛型类型进行赋值
        Member<Integer> member = new Member<>();
        //方法返回值位置自己有<T>,不受上一级影响
        //不受类或接口的泛型影响,可以任意类型;
        String name = member.test1("小哈");
        //方法返回值位置没有自己的<T>,就要收到上一级影响,就要符合整个接口或者类的整个泛型
        //因为创建对象的时候赋值Integer类型,所以这里只能是Integer类型;
        Integer age = member.test2(10);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值